【问题标题】:While I'm trying to insert data into my access database it's showing Exceptionhandler error: Syntax error INSERT INTO statement当我尝试将数据插入我的访问数据库时,它显示异常处理程序错误:语法错误 INSERT INTO 语句
【发布时间】: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


【解决方案1】:

companyDetails ([column name]) 的结构不正确。 '[Column name]' 听起来是静态的。

您认为您忘记使用您的专栏名称了吗?

问候,

【讨论】:

  • 没有。我没有!先生。 @Ufuktan
  • 您要在“companyDetails”表中添加的列的名称是什么?此代码上未添加列名。此外,您确定在公司详细信息表中填写了不可为空的列吗? @KrishnaGhosh
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
相关资源
最近更新 更多