Winforms:运行oledb连接时发生错误(未为命令对象设置可安装的Isam,Commandtext)

时间:2019-01-22 03:58:45

标签: c# winforms ms-access oledb

我的情况是,一旦我按下按钮,代码就会从MS Access检索关于EquipmentBrand的{​​{1}}和EquipmentType。我可以通过类SerialNumber检索序列号,并使其自动完成。但是,现在我在检索设备品牌和类型时遇到问题。我尝试了两个代码,但是都有不同的错误。这是我的访问屏幕截图:MS Access screenshot

对于第一个错误,我将平台更改为x86。

第一个错误:在行oledb

上找不到可安装的Isam
connection.Open();

对于第二个错误,我已经更改了private void Form1_Load(object sender, EventArgs e) { oledb da = new oledb(); textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; textBox1.AutoCompleteCustomSource = da.Loadserialnum(); } private void button2_Click(object sender, EventArgs e) { var connection = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = C:\\Users\\equipment.accdb"); var command = connection.CreateCommand(); { command.Parameters.AddWithValue("SerialNumber", (textBox1.Text)); connection.Open(); //error here var reader = command.ExecuteReader(); while (reader.Read()) { textBox2.Text = reader["EquipmentBrand"].ToString(); textBox3.Text = reader["EquipmentType"].ToString(); } } } (另一种适用于遇到我的第一个问题的人的方法),但是发生了新的错误:未在以下位置为命令对象设置命令文本Data Source

希望得到一些帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

由于OleDbConnection.CreateCommand()返回OleDbCommand的实例,因此需要在打开连接之前将CommandText属性设置为要执行的查询字符串,否则它将抛出 Command没有为命令对象设置文本错误。下面是使用CommandText属性的示例:

private void button2_Click(object sender, EventArgs e)
{
    var connection = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = C:\\Users\\equipment.accdb");
    var command = connection.CreateCommand();

    // query string example
    command.CommandText = "SELECT * FROM TableName WHERE SerialNumber = ?"; 

    command.Parameters.AddWithValue("SerialNumber", (textBox1.Text));
    connection.Open(); // open the connection
    var reader = command.ExecuteReader();
    while (reader.Read())
    {
        textBox2.Text = reader["EquipmentBrand"].ToString();
        textBox3.Text = reader["EquipmentType"].ToString();
    }
}