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

我正在尝试使用Asp.net将数据直接从Microsoft Excel文件复制到数据库中。 问题是电子表格有一个名为Product[°C]的列,当我将其包含在查询中时,无法将其parsing为有效的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]]] 。 debugging器给出一个错误说:

附加信息:查询expression式'[Product [°C]]]'中的语法错误'。

就像我想要在SQL中使用[Product [°C]]查询表一样,我可以通过使用:

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

这个查询在SQL中parsing得很好,但是当我查询Excel的时候没有。 为什么不?

好吧,我终于推断,您正在使用Excel Jet驱动程序直接连接到Excel电子表格。 这个驱动程序使用SQL引擎,它具有一些独特的function。

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

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

注意使用'('代替'['。