这个代码的错误是什么
connect = new OleDbConnection(coo);
connect.Open();
command.Connection = connect;
DataTable dt = new DataTable();
OleDbDataAdapter ODA = new OleDbDataAdapter("SELECT * FROM Items where itemno = '" + textBox1.Text + "'", connect);
ODA.Fill(dt);
dataGridView1.DataSource = dt;
在我运行它之后,就是这样
"标准表达式中的数据类型不匹配"
我该怎么办?
itemno
是整数,这就是为什么您会得到错误,请删除值周围的单引号但是,更重要的是,在查询中使用参数。您容易出现SQL注入
using (var connect = new OleDbConnection(coo))
{
using (OleDbCommand command = new OleDbCommand("SELECT * FROM Items where itemno = ?", connect))
{
command.Parameters.Add(new OleDbParameter("@p1", OleDbType.Integer)
{
Value = textBox1.Text
});
DataTable dt = new DataTable();
OleDbDataAdapter ODA = new OleDbDataAdapter(command);
ODA.Fill(dt);
dataGridView1.DataSource = dt;
}
}
需要添加的几件事:
- 将命令和连接对象封装在
using
语句中 - 您不必显式打开与DataAdapter的连接。它将打开与数据库的连接
- OleDB使用位置参数而不是命名参数