我的情况是,一旦我按下按钮,代码就会从MS Access检索关于EquipmentBrand
的{{1}}和EquipmentType
。我可以通过类SerialNumber
检索序列号,并使其自动完成。但是,现在我在检索设备品牌和类型时遇到问题。我尝试了两个代码,但是都有不同的错误。这是我的访问屏幕截图:MS Access screenshot
对于第一个错误,我将平台更改为x86。
第一个错误:在行oledb
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
行
希望得到一些帮助,谢谢!
答案 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();
}
}