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

时间:2014-12-31 03:32:53

标签: excel ado.net jet

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

我正在使用以下代码中的代码,了解如何connect to and query an Excel file via OleDb and Ado.net

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]]]。调试器给出错误说:

  

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

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

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

此查询在SQL中解析得很好,但在查询Excel时则不行。为什么不呢?

1 个答案:

答案 0 :(得分:1)

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

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

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

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