ms访问datagridview中的数据库连接



这个代码的错误是什么

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使用位置参数而不是命名参数

最新更新