我的Insert命令有什么问题?
本文关键字:问题 什么 Insert 命令 我的 | 更新日期: 2023-09-27 18:13:54
我正在尝试使用c#中的DataGridView
插入数据到我的数据库中。然而,当我点击保存按钮出现以下错误信息:
System.Data.OleDb。oledbeexception未处理
HResult = -2147217900
消息= INSERT INTO语句语法错误。
来源= Microsoft Office Access Database Engine
ErrorCode = -2147217900
下面是我的代码:
private void save_btn_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Stock.accdb");
con.Open();
for (int i = 0; i < dataGridView_insert.Rows.Count; i++)
{
OleDbCommand cmd = new OleDbCommand("INSERT INTO product(OV,Reference,Cod_Client,Client,Qtd,Type_product,Posicion_product,) VALUES ('" + dataGridView_insert.Rows[i].Cells["OV"].Value + "','" + dataGridView_insert.Rows[i].Cells["Reference"].Value + "','" + dataGridView_insert.Rows[i].Cells["Cod_Client"].Value + "','" + dataGridView_insert.Rows[i].Cells["Client"].Value + "','" + dataGridView_insert.Rows[i].Cells["Qtd"].Value + "','" + dataGridView_insert.Rows[i].Cells["Type_product"].Value + "','" + dataGridView_insert.Rows[i].Cells["Posicion_product"].Value + " ' ", con);
cmd.ExecuteNonQuery();
}
con.Close();
}
怎么了?
您在Posicion_product
之后有一个偏离的,
,并且您在插入语句中错过了VALUES
的右括号。删除它。此外,您应该始终使用参数化查询来避免SQL注入:
OleDbCommand cmd = new OleDbCommand("INSERT INTO product(OV,Reference,Cod_Client,Client,Qtd,Type_product,Posicion_product) VALUES (@a,@b,@c,@d,@e,@f,@g)", con);
cmd.Parameters.AddWithValue("@a", dataGridView_insert.Rows[i].Cells["OV"].Value);
cmd.Parameters.AddWithValue("@b", dataGridView_insert.Rows[i].Cells["Reference"].Value);
cmd.Parameters.AddWithValue("@c", dataGridView_insert.Rows[i].Cells["Cod_Client"].Value);
//And continue for other parameters
虽然直接指定类型并使用Value
属性比AddWithValue
要好:
cmd.Parameters.Add("@a", SqlDbType.VarChar).Value = dataGridView_insert.Rows[i].Cells["OV"].Value;