C#-OleDBDataAdapter.Fill(DataSet)引发“没有为一个或多个必需参数提供值。”

时间:2018-12-10 14:54:30

标签: c# dataset oledbdataadapter

我有以下代码来访问.xlsx文件,并获取名为“ Sheet1”的工作表作为表格。然后,使用select命令选择URL和Username的值。

string strPath = @"C:\Users\...\TestData.xlsx";
string strExcelConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + ";Extended Properties=\"Excel 12.0 Xml;HDR=No;IMEX=1\";");
OleDbConnection connExcel = new OleDbConnection(strExcelConn);
try
{
    connExcel.Open();
    DataTable dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();

    OleDbCommand cmdExcel = new OleDbCommand("SELECT URL, Username From [" + SheetName + "]",connExcel);

    DataSet ds = new DataSet();

    OleDbDataAdapter da = new OleDbDataAdapter("SELECT URL, Username From [" + SheetName + "]", strExcelConn);
    cmdExcel.CommandText = "SELECT URL, Username From [" + SheetName + "]";
    Console.WriteLine(cmdExcel.CommandText);

    da.Fill(ds);
    connExcel.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
    connExcel.Close();
}

不幸的是,在适配器的数据填充过程中出现以下错误。

da.Fill(ds);

错误提示

Message: System.Data.OleDb.OleDbException : No value given for one or more required parameters.

有人可以帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

问题仅在我尝试选择特定列时出现。如果我有从* 中选择*,它会正常工作。

但是,不确定实际的问题。