gpt4 book ai didi

c# - INSERT INTO 语句 MS Access 中的语法错误(不是关键字问题)

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:36 24 4
gpt4 key购买 nike

当我尝试将数据行插入到 ms Access 文件中的表中时,我遇到了这个错误。dataTable 是我使用 select * from TableName 得到的表,

我得到它,显示它,进行了更改,现在我想用新的替换旧的。所以我要删除所有以前的行并从新表中逐行添加每一行。但我无法插入任何行。

我收到这个错误

"Syntax error in INSERT INTO statement."

String query = "INSERT INTO [" + TableName + "] (TaskID, HTMLTopic, [Group], nKey,"
+ " nText, nImage, nSelImage, nFontName, nFontInfo, Keywords) VALUES (@TaskID,"
+ " @HTMLTopic, @Group, @nKey, @nText, @nImage, @nSelImage, @nFontName, "
+ " @nFontInfo, @Keywords)";
OleDbCommand command = new OleDbCommand(query, mdbConnection);
command.Parameters.AddWithValue("@TaskID", dataTable.Rows[0]["TaskID"]);
command.Parameters.AddWithValue("@HTMLTopic", dataTable.Rows[0]["HTMLTopic"]);
command.Parameters.AddWithValue("@Group", dataTable.Rows[0]["Group"]);
command.Parameters.AddWithValue("@nKey", dataTable.Rows[0]["nKey"]);
command.Parameters.AddWithValue("@nText", dataTable.Rows[0]["nText"]);
command.Parameters.AddWithValue("@nImage", dataTable.Rows[0]["nImage"]);
command.Parameters.AddWithValue("@nSelImage", dataTable.Rows[0]["nSelImage"]);
command.Parameters.AddWithValue("@nFontName", dataTable.Rows[0]["nFontName"]);
command.Parameters.AddWithValue("@nFontInfo", dataTable.Rows[0]["nFontInfo"]);
command.Parameters.AddWithValue("@Keywords", dataTable.Rows[0]["Keywords"]);
mdbConnection.Open();
command.ExecuteNonQuery();
mdbConnection.Close();

编辑:将其更改为仅用于调试

        String query = "INSERT INTO [" + TableName + "] (TaskID, HTMLTopic, nRelative, [Group], nKey,"
+ " nText, nImage, nSelImage, nFontName, nFontInfo, Keywords) VALUES ('" + dataTable.Rows[0]["TaskID"]
+ "', '" + dataTable.Rows[0]["HTMLTopic"] + "', '" + dataTable.Rows[0]["nRelative"] + "', '" + dataTable.Rows[0]["Group"]
+ "', " + dataTable.Rows[0]["nKey"] + ", '" + dataTable.Rows[0]["nText"] + "', '" + dataTable.Rows[0]["nImage"]
+ "', '" + dataTable.Rows[0]["nSelImage"] + "', '" + dataTable.Rows[0]["nFontName"] + "', '" + dataTable.Rows[0]["nFontInfo"]
+ "', '" + dataTable.Rows[0]["Keywords"] + "')";

OleDbCommand command = new OleDbCommand(query, mdbConnection);
Debug.Print(command.CommandText);
mdbConnection.Open();
command.ExecuteNonQuery();
mdbConnection.Close();

我添加了一些单引号以便数据库可以将它们理解为字符串。

最佳答案

似乎在提供程序和引擎之间的某处存在错误。看起来问题出在名为 nText 的列上。

我在 Access 2013 数据库中复制了您的架构,但收到了与您相同的错误。然后我开始对列名和查询进行各种更改。当我更改列名(在每列的末尾附加一个 X)时,INSERT 起作用了。然后我回去开始为其他列名添加方括号。一旦我为 nText 做了这件事,它就起作用了。此查询在使用 Microsoft.ACE.OLEDB.12.0 oldeb 提供程序的 C# 控制台应用程序中对我有用:

    String query =
"INSERT INTO [" + TableName + "] (TaskID,HTMLTopic,[Group],nKey,[nText],nImage,nSelImage,nFontName,nFontInfo,Keywords)" +
"VALUES" +
"(@TaskID,@HTMLTopic, @Group, @nKey, @nText, @nImage, @nSelImage, @nFontName,@nFontInfo, @Keywords)"

我同意你的看法,它不应该是关键字/保留字问题,但确实如此。 NTEXT 是 TSQL (SQL Server) 中的关键字,但根据 https://support.microsoft.com/en-us/kb/286335 不是 Access .

关于c# - INSERT INTO 语句 MS Access 中的语法错误(不是关键字问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com