OleDbAdapter没有认识到' @'在查询中

时间:2014-09-24 13:31:03

标签: c# oledb

以下代码用于将excel中的数据读入gridview。

String cusid1 = maskedTextBox1.Text.ToString();
string s = "provider=Microsoft.Jet.OLEDB.4.0;data source=c:xxx.xls;Extended Properties=Excel 8.0;";
OleDbConnection con = new OleDbConnection(s); // connection string
con.Open();
string strQuery = "select * from [test$] where cusid = @cusid1";
OleDbDataAdapter da = new OleDbDataAdapter(strQuery, con);

//Or Use OleDbCommand
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

conn.Open();

但是当指定一个代替@cusid1的数字,如select * from [test$] where cusid=1时,我会得到正确的输出。如果我在查询中使用@cusid,我会收到此错误:

  

没有给出一个或多个必需参数的值。

1 个答案:

答案 0 :(得分:1)

你应该传递参数。此外,命名参数在OLEDB中不做任何事情。他们被忽略了。请改用?

MSDN

  

OLE DB .NET提供程序不支持将参数传递给SQL语句的命名参数

您需要的代码:

 string strQuery = "select * from [test$] where cusid = ?";

 OleDbCommand command = new OleDbCommand(sqlQuery, conn);
 command.Parameters.AddWithValue("?", cusid);

 da.SelectCommand = command;