C# 如何使用C从文本框中的access数据库获取数据

C# 如何使用C从文本框中的access数据库获取数据,c#,ms-access,ado.net,oledb,C#,Ms Access,Ado.net,Oledb,我有一个数据库,我在其中创建了一个表HUGO_BOSS。其列为[品牌名称]、[库存数量]、[零售价格],其主键为[品牌名称]。我想在windows窗体的文本框中填入数据库中的库存量值。我尝试了以下代码,但它给出了运行时错误 连接未关闭,连接状态为打开 还有一件事,这里我将使用combobox3选择主键。看起来您正在尝试重用已打开的数据库连接 在尝试打开连接之前,可以尝试测试连接状态: OleDbCommand cmd = con.CreateCommand(); cmd.CommandText

我有一个数据库,我在其中创建了一个表HUGO_BOSS。其列为[品牌名称]、[库存数量]、[零售价格],其主键为[品牌名称]。我想在windows窗体的文本框中填入数据库中的库存量值。我尝试了以下代码,但它给出了运行时错误

连接未关闭,连接状态为打开


还有一件事,这里我将使用combobox3选择主键。看起来您正在尝试重用已打开的数据库连接

在尝试打开连接之前,可以尝试测试连接状态:

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

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

看起来您正在尝试重用已打开的数据库连接

在尝试打开连接之前,可以尝试测试连接状态:

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

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

它会给出一个错误,即多步骤OLE DB操作生成的错误。检查每个OLE DB状态值(如果可用)。“没有完成任何工作。@Dany在你的问题中,你说表名是HUGO_BOSS,但在SQL代码中,你只查询表HUGO_BOSS一个G。你确定SQL查询是正确的吗?”?另外,comboBox3是什么类型。SelectedItem?抱歉,实际上有一个输入错误。正确的拼写是HUGO_BOSS,my comboBox3包含数据库中的品牌名称列表。如果用户选择某个特定的品牌名称,则“我的文本框”应给出其在库存中的可用数量。@Dany如果SelectedItem是字符串,您确定[brand name]在varchar或nvarchar或char/nchar中是正确的吗?另外,您是否在连接字符串中指定了数据库名称?是的,我在连接字符串中指定了数据库名称。我的品牌名称是一个文本。实际上我使用的是ms access数据库。它给出了一个错误多步骤OLE DB操作生成的错误。检查每个OLE DB状态值(如果可用)。“没有完成任何工作。@Dany在你的问题中,你说表名是HUGO_BOSS,但在SQL代码中,你只查询表HUGO_BOSS一个G。你确定SQL查询是正确的吗?”?另外,comboBox3是什么类型。SelectedItem?抱歉,实际上有一个输入错误。正确的拼写是HUGO_BOSS,my comboBox3包含数据库中的品牌名称列表。如果用户选择某个特定的品牌名称,则“我的文本框”应给出其在库存中的可用数量。@Dany如果SelectedItem是字符串,您确定[brand name]在varchar或nvarchar或char/nchar中是正确的吗?另外,您是否在连接字符串中指定了数据库名称?是的,我在连接字符串中指定了数据库名称。我的品牌名称是一个文本。实际上我使用的是ms access数据库。