ms访问datagridview中的数据库连接

时间:2015-02-10 18:49:39

标签: c# 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;

在我运行之后,这就是发生的事情

  

"标准表达式中的数据类型不匹配"

我该怎么办?

1 个答案:

答案 0 :(得分:0)

itemno是整数,这就是为什么你得到错误,删除值周围的单引号。 但更重要的是,将参数与查询一起使用。你很容易SQL Injection

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 statement
  • 您不必明确打开与DataAdapter的连接。它将打开与数据库的连接。
  • OleDB使用位置参数而不是命名参数