【问题标题】:C# Syntax Error - INSERT INTO statement. Access Database.C# 语法错误 - INSERT INTO 语句。访问数据库。
【发布时间】:2014-01-09 14:06:02
【问题描述】:

这是我在INSERT statement 中遇到语法错误的代码:

string strSql = "INSERT INTO Responses (OCR, DeadlineDate, OCR Title) VALUES ('"+textBox5.Text+"','"+textBox7.Text+"', '"+textBox6.Text+"')";

OleDbConnection newConn = new OleDbConnection(strProvider);
OleDbCommand dbCmd = new OleDbCommand(strSql, newConn);

newConn.Open();
dbCmd.ExecuteNonQuery();

有什么想法吗?

【问题讨论】:

标签: c# ms-access syntax insert sql-insert


【解决方案1】:

列名OCR Title 无效,您必须使用[] 转义它,例如[OCR Title]

INSERT INTO Responses (OCR, DeadlineDate, [OCR Title]) VALUES( ...

另外,请尝试使用参数化查询而不是连接值:

string strSql = "INSERT INTO Responses (OCR, DeadlineDate, [OCR Title]) VALUES (?, ?, ?)";

using (OleDbConnection newConn = new OleDbConnection(strProvider))
{
  using (OleDbCommand dbCmd = new OleDbCommand(strSql, newConn))
  {
    dbCmd.CommandType = CommandType.Text;
    dbCmd.Parameters.AddWithValue("OCR", textBox5.Text);
    dbCmd.Parameters.AddWithValue("DeadlineDate", textBox7.Text);
    dbCmd.Parameters.AddWithValue("[OCR Title]", textBox6.Text);
    newConn .Open();
    dbCmd.ExecuteNonQuery();
  }
}

【讨论】:

  • 在升级到新的数据库版本时,最好总是在列名周围加上括号,例如OCR 成为关键字。
【解决方案2】:

我猜语法错误与 c# 无关,而是与 SQL 语句有关。

也许您需要对“OCR 标题”表名的 textBoxes 值和文本限定符进行转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多