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

Posted

技术标签:

【中文标题】如何使用 C# 从文本框中的访问数据库中获取数据【英文标题】:How to fetch data from access database in a textBox using C# 【发布时间】:2013-11-29 18:18:22 【问题描述】:

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

您似乎正在尝试重用已打开的数据库连接。

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

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 在您的问题中,您说表名是HUGGO_BOSS,但在SQL 代码中您查询的是表HUGO_BOSS(只有一个G)。您确定 SQL 查询正确吗?还有,comboBox3.SelectedItem是什么类型的? 对不起,实际上有一个输入错误。正确的拼写是HUGO_BOSS,我的combobox3包含数据库中的品牌名称列表。如果用户选择了一个特定的品牌名称,那么我的文本框应该给出它在库存中的可用数量。 @Dany 如果SelectedItem 是一个字符串,您确定[Brand Name]varcharnvarchar(或char / nchar)中吗?另外,您是否在连接字符串中指定了数据库名称? 是的,我在连接字符串中指定了数据库名称。我的品牌名称是文字。其实我正在使用 ms 访问数据库。

以上是关于如何使用 C# 从文本框中的访问数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

C#如何从表单中的文本框中获取文本,从不同的类调用

如何通过 C# ASP.net 从 SQL Server 中的文本框中存储日期

C#中怎样从一个form的文本框获取另一个form中Comobox控件的值

c# 将从单个文本框中获取的多个值分配给标签

请问在c# winform中怎么将文本框中的数值保存到数据库中money类型的字段中???

如何从 .NET 框架 C# 中的文本框中删除双逗号?