当我在 64 位系统上启动程序时,我正在从使用“Microsoft.Jet.OLEDB.4.0”提供程序切换到“Microsoft.ACE.OLEDB.12.0”,并且我了解 ACE 已取代 Jet 为 64 位利用。
我没有更改传递给 my 的查询的语法OleDbCommand
,但它现在会导致异常:
“没有为一个或多个必需参数提供值。”
代码如下:
static void Main(string[] args)
{
const string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\PimsImport\\PreciousStore\\imports;Extended Properties='Text;HDR=NO;IMEX=1'";
const string selectStatement = "SELECT F1 AS NameColumn FROM C:\\PimsImport\\PreciousStore\\imports\\PIMSPreciousbradypxx.csv";
using (var connection = new OleDbConnection(connectionString))
{
using (var cmd = new OleDbCommand(selectStatement, connection))
{
cmd.Connection.Open();
OleDbDataReader workbookReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
workbookReader.Close();
}
}
}
如果我删除F1
, 并替换为*
; 它工作正常。但是我的 csv 没有标题,所以我想使用F1
语法来获取第一列。
知道为什么这不再有效吗?