如何使用C#从textBox中的访问数据库中获取数据

时间:2013-11-29 18:18:23

标签: c# ms-access ado.net oledb

我有一个数据库,我在其中创建了一个表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

选择主键

1 个答案:

答案 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();
}

或者,您可以在每次需要执行新命令时创建新连接。