0

我知道已经有很多这样的帖子,但我浏览了很多,它们似乎都是针对一个人的需求,所以我想我会看看是否有人可以帮助我满足我的特定需求。

我正在使用 Oledb 和 c#,我正在尝试创建一个 Excel 工作表并填充它,但在使用此 INSERT 语句时出现错误“查询表达式中的语法错误(缺少运算符)”:

for (int i = 0; i <= 20; i++)
{
     command.CommandText = string.Format("INSERT INTO [Table] (Id, Tag, Description) VALUES ('{0}','2','3')", diff1[i]);
     command.ExecuteNonQuery();
}

解释一下,我有一个字符串数组 diff1[],我使用循环将每个元素插入到它自己的单元格中,它会一直工作,直到它到达字符串元素:

"\r\n\"603\",\"FuelPumpTestWarning\",\"<table style=\"\"border: 4px solid black; border-collapse:collapse;\"\">\r\n<tbody>\r\n<tr>\r\n<td bgcolor=\"\"#FF7700\"\" style=\"\"border: 5px solid black; border-collapse:collapse;\"\">\r\n<div style=\"\"width: 0; height: 0; border-left: 18px solid transparent; border-right: 18px solid transparent; border-bottom: 33px solid black; margin: 5px 5px 5px 5px;\"\" >\r\n<p style=\"\"font-family:Arial; color:#ff7700; \r\nfont-size:32px; margin:5px -5px 0px -5px;\"\">!</p>\r\n<p style=\"\"color:black; font-size:32px; margin:-45px 30px; font-family:'Arial Black', Arial; font-weight:'900';\"\">WARNING</p>\r\n</div>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"\"border: 5px solid black; border-collapse:collapse;\"\">\r\n<p style=\"\"font-size:12px; font-family:'Arial Black', Arial; font-weight:'900'\"\">You are about to perform a test that\r\ninvolves pressurized gasoline being\r\npumped. Before performing this\r\ntest, be sure the area is free and\r\nclear from combustibles, open\r\nflame, welding and/or grinding\r\nsparks, or anything else that could\r\nignite or be an ignition source.<br>\r\n<br>\r\nFAILURE TO FOLLOW THIS WARNING\r\nMAY CAUSE INADVERTENT IGNITION\r\nTHAT COULD RESULT IN SERIOUS\r\nINJURY OR DEATH.</p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\""

忽略最后两列填充 2s 和 3s 的事实,这只是一个占位符,直到我弄清楚如何执行此操作,因为它们也将使用字符串数组填充。字符串元素中是否有出现错误的特殊字符?它通过了大约 10 个与这个相似的其他元素,但在这个上出现了错误。

我已经用尽了我能想到的所有选择,因此将不胜感激任何帮助。

4

2 回答 2

3

语句有单引号

font-family:'Arial Black', Arial; 

你应该试试这个。用双单引号替换单引号。

for (int i = 0; i <= 20; i++)
{
     command.CommandText = string.Format("INSERT INTO [Table] (Id, Tag, Description) VALUES ('{0}','2','3')", diff1[i].Replace("'","''"));
     command.ExecuteNonQuery();
}
于 2013-06-07T18:52:07.287 回答
1

试试下面

command.CommandText ="INSERT INTO [Table] (Id, Tag, Description) VALUES (@id,'2','3')";

command.Parameters.Add(new SqlParameter("@id", ""));

for (int i = 0; i <= 20; i++)
{
    command.Parameters["@id"].Value = diff1[i];
    command.ExecuteNonQuery();
}
于 2013-06-07T18:51:51.097 回答