【发布时间】:2019-05-26 23:17:12
【问题描述】:
我正在尝试将值插入到我的 MS Access 数据库中,但异常处理程序显示错误:
“INSERT INTO”语句中的语法错误。
但我检查并没有发现错误。如何解决此类错误?
我尝试使用命令和参数修复它,并检查了数千次,但我的代码中没有发现任何错误。
private void Save_bt_Click(object sender, EventArgs e)
{
con.Open();
OleDbCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO CompanyDetails([column name]) VALUES ('"+textboxname.Text+"')";
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Data saved!");
}
我希望消息框会显示“已保存数据”。但它反而在行上显示错误
ExecuteNonQuery()
还有INSERT INTO 语句的语法。
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看 Little Bobby Tables
-
@marc_s 我是这里的初学者,也是 c# 的初学者,所以请你帮我理解这些参数。比如举个例子!
-
这个克里希纳怎么样?设置 CommandText 后添加 Console.WriteLine(cmd.CommandText)。将此值粘贴到 Access 查询设计器中,您将收到更好的错误消息...另外,不要接受用户文本以在 sql 中使用,如 marc_s 所述
-
从您所展示的内容中可以明显看出,该语法没有任何问题。您正在使用的
textboxname的值可能是问题所在,或者[column name]并不是您的列名,您使用的内容无效。照@SimonWilson 说的做,在ExecuteNonQuery()之前查看CommandText的值。 -
I have tried to fix it with ... parameters您应该发布该代码,因为长期以来将数据和文本粘合在一起进行查询一直是错误的方式。使用参数可以轻松解决此类问题
标签: c# database ms-access exception-handling syntax-error