OleDbCommand INSERT INTO语句语法错误

本文关键字:语法 错误 语句 INTO INSERT OleDbCommand | 更新日期: 2023-09-27 18:10:45

我在INSERT INTO语句中出现语法错误,我不知道为什么。我检查了几个不同的SO问题,这些问题几乎与我的问题完全相同,在以这种方式和那种方式更改我的代码后,它仍然不工作。

        var cnnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", oldDb);
        var cnn = new OleDbConnection(cnnStr);
        cnn.Open();
        //make new access table
        using (OleDbCommand command = new OleDbCommand())
        {
            command.Connection = cnn;
            command.CommandText = String.Format("CREATE TABLE [{0}] ([Tag] string, [Text] string)", newTable + "_Diff");
            try
            {
                command.ExecuteNonQuery();
            }
            catch
            {
                //table already exists
            }
        }
        //fill access table
        using (OleDbCommand command = new OleDbCommand())
        {
            command.Connection = cnn;
            command.CommandText = String.Format("INSERT INTO [{0}] (Tag, Text) VALUES (?, ?)", newTable + "_Diff");
            command.Parameters.Add(new OleDbParameter("Tag", ""));
            command.Parameters.Add(new OleDbParameter("Text", ""));
            for (int i = 0; i < (diffText.Length - 1); i++)
            {
                command.Parameters["Tag"].Value = diffTag[i];
                command.Parameters["Text"].Value = diffText[i];
                command.ExecuteNonQuery();
            }
        }
        cnn.Close();

创建表工作,所以我知道我的连接没有问题,只是有一些东西不喜欢我的插入语句。

OleDbCommand INSERT INTO语句语法错误

在插入命令中将文本放入方括号中,"text"是关键字

command.CommandText = String.Format("INSERT INTO [{0}] (Tag, [Text]) 
                                    VALUES (?, ?)", newTable + "_Diff");

还要确保你的值包含了单引号

值 ('?','?')

希望能成功