[英]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.