C# OLEDB命令使用括号';[';';]';在查询中作为表名
我有一个C# OLEDB命令使用括号';[';';]';在查询中作为表名,c#,oledb,sql-insert,oledbcommand,C#,Oledb,Sql Insert,Oledbcommand,我有一个Excel文件,其中包含以下列名:name,Display name[de de],Comment[de] 如果我使用此查询,插入[foo$]([Name],[Display Name[de de]],[Comment[de de]],我会得到一个异常: INSERT INTO语句中的语法错误 我必须如何转义括号才能在查询中使用它们 示例代码 var connectionString=$“Provider=Microsoft.ACE.OLEDB.12.0;数据源=\”{Path.Com
Excel
文件,其中包含以下列名:name
,Display name[de de]
,Comment[de]
如果我使用此查询,插入[foo$]([Name],[Display Name[de de]],[Comment[de de]]
,我会得到一个异常:
INSERT INTO语句中的语法错误
我必须如何转义括号才能在查询中使用它们
示例代码
var connectionString=$“Provider=Microsoft.ACE.OLEDB.12.0;数据源=\”{Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“foo.xlsx”)}\“扩展属性=\”Excel 12.0;HDR=YES;\”;
使用(OLEDB连接连接=新OLEDB连接(连接字符串))
{
conn.Open();
使用(OleDbCommand cmd=new OleDbCommand())
{
尝试
{
cmd.Connection=conn;
cmd.CommandText=@“插入到[Hmi标签$]”([Name],[Display Name[de de]],[Comment[de de]]))
值('foo1','foo2','foo3');”;
cmd.ExecuteNonQuery();
Console.WriteLine(“成功”);
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
}
Console.ReadKey();
变通办法
到目前为止,唯一有效的解决方案是基于以下答案:
一个选项是完全删除列声明,只需执行插入..
试试这样的
Insert into [foo$] ('[Name]','[Display name [de-DE]]','[Comment [de-DE]]',
请尝试以下内容:[Display name[de de]]]
或者:[Display name[[de de]]]]
很遗憾,这篇文章可能对您有所帮助。@Caramiriel我也尝试过回答,但没有回答success@DominicJonas您可以添加完整的插入查询吗?您使用的是什么?我已经在我的问题中添加了其他信息,包括示例