以下代码用于将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
,我会收到此错误:
没有给出一个或多个必需参数的值。
答案 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;