C#语法错误 - INSERT INTO语句。访问数据库。

时间:2014-01-09 14:06:03

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

这是我的代码,我在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();

任何想法?

2 个答案:

答案 0 :(得分:9)

列名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();
  }
}

答案 1 :(得分:0)

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

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