尝试在命令文本中包含多部分标识符 [°C] 时的语法



我正在尝试使用 Asp.net 将数据直接从Microsoft Excel文件复制到数据库中。问题是电子表格有一个名为 Product[°C] 的列,当我包含在查询中时,无法解析为有效的 SQL。

我正在使用有关如何通过 OleDb 和 Ado.net 连接和查询 Excel 文件的示例中的以下代码。

var conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0},HDR={1}";
conStr = String.Format(conStr, FilePath, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
connExcel.Open();
var SheetName = "Sheet1$";
// ...
cmdExcel.CommandText = "SELECT [Date/time] as [Date/time], [Product[°C]]] as [Product] From [" + SheetName + "] ";   

这里的问题位是[Product[°C]]] .调试器给出一个错误,指出:

其他信息:查询表达式"[产品[°C]]]"中的语法错误。

如果我想在SQL中使用[Product[°C]]查询表,我可以通过以下方式进行:

Select id, [Product[°C]]] from TableName  

此查询在 SQL 中解析良好,但在我查询 Excel 时则不然。为什么不呢?

好的,我终于推断出您正在使用 Excel Jet 驱动程序直接连接到 Excel 电子表格。此驱动程序使用SQL引擎,该引擎具有一些...独特的功能。

一个功能是将列名中的方括号转换为括号。你想要的可能是这个:

 cmdExcel.CommandText = "select [Date/Time], [Product(°C)] from [Sheet1$]";

请注意使用"("代替"["。

最新更新