簡體   English   中英

在INSERT INTO語句中使用Oledb語法錯誤添加到數據庫

[英]Adding to database using Oledb Syntax error in INSERT INTO statement

當我點擊添加按鈕以插入一本新書時,我在cmd.ExecuteNonQuery()處收到錯誤消息。 INSERT INTO語句中的語法錯誤。 我有什么想念的嗎?

protected void btnAddBook_Click(object sender, EventArgs e)
            {
                string connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|Bookdb.accdb";
                using (OleDbConnection conn = new OleDbConnection(connect))
                {
                    OleDbCommand cmd = new OleDbCommand("INSERT INTO Books (Title, Author, Price, Edition) VALUES (@Title, @Author, @Price, @Edition)");
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = conn;
                    cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
                    cmd.Parameters.AddWithValue("@Author", TextBox2.Text);
                    cmd.Parameters.AddWithValue("@Price", TextBox3.Text);
                    cmd.Parameters.AddWithValue("@Edition", TextBox4.Text);


                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }

我發現您的代碼可能失敗的唯一原因是,如果Price字段是數據庫表中的數字字段。 您正在使用AddWithValue創建一個參數,此方法將創建一個參數,該參數的數據類型是從傳遞的值的數據類型派生的。 您傳遞一個字符串(TextBox3.Text),因此AddWithValue創建一個字符串參數。

您可以嘗試強制AddWithValue使用以下命令創建數字參數

 cmd.Parameters.AddWithValue("@Price", Convert.ToDecimal(TextBox3.Text));

(當然假設有一個十進制的價格列)

在調用conn.Open() ,您需要調用cmd.Prepare() ,以便將您設置的所有參數實際加載到SQL語句中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM