我有一个数据库,我在其中创建了一个表HUGO_BOSS
。其列为[brand name]
,[stock quantity]
,[retail price]
,其主键为[Brand name]
。我想用Windows窗体中的文本框填充我的数据库中存在的库存数量值。我尝试了以下代码,但它给出了运行时错误
连接未关闭,连接状态已打开。
if (comboBox2.Text == "HUGO BOSS")
{
try
{
OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = "Select [Stock quantity] as stockquantity from HUGO_BOSS WHERE [Brand name]=@name";
cmd.Parameters.AddWithValue("@name", comboBox3.SelectedItem);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
if (dr.Read())
{
textBox7.Text = dr["stockquantity"].ToString();
}
}
finally { con.Close(); }
}
还有一件事,我将在这里使用combobox3
答案 0 :(得分:1)
看起来您正在尝试重用已经打开的数据库连接。
您可以尝试在尝试打开它之前测试连接状态:
OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = "Select [Stock quantity] as stockquantity from HUGO_BOSS WHERE [Brand name]=@name";
cmd.Parameters.AddWithValue("@name", comboBox3.SelectedItem);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
if (dr.Read())
{
textBox7.Text = dr["stockquantity"].ToString();
}
或者,您可以在每次需要执行新命令时创建新连接。