【问题标题】:Load Data from SQL Server into a combobox将数据从 SQL Server 加载到组合框中
【发布时间】:2016-02-04 02:34:55
【问题描述】:

我试图从 SQL Server(2 个表:FamilleCompte)获取数据到 Form_Load() 的 2 个组合框中。

但正如您看到的结果,它适用于第一个组合框,但第二个显示System.Data.SqlClient.SqlDataReader

这是代码

private void Tresorerie_Load(object sender, EventArgs e)
{
        conn = new SqlConnection(connstring);
        conn.Open();
        String queryCompte = "select NomCom from Compte";
        String queryFamille = "select NomFam from Famille";
        commCompte = new SqlCommand(queryCompte, conn);
        commFamille = new SqlCommand(queryFamille, conn);

        try
        {
            //Compte
            commCompte.CommandType = CommandType.Text;
            dreaderCompte = commCompte.ExecuteReader();

            while (dreaderCompte.Read())
            {
                queryCompte = dreaderCompte[0].ToString();
                TreComBoxCompte.Items.Add(queryCompte);
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Problem with load Compte");
        }
        finally
        {
            dreaderCompte.Close();
        }

        try
        {
            //Famille
            commFamille.CommandType = CommandType.Text;
            dreaderFamille = commFamille.ExecuteReader();

            while (dreaderFamille.Read())
            {
                queryFamille = dreaderFamille[0].ToString();
                TreComBoxFamille.Items.Add(dreaderFamille);
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Problem with load Famille");
        }
        finally
        {
            dreaderFamille.Close();
        }
        conn.Close();
    }

【问题讨论】:

  • 对于第二个组合框,您正在添加数据读取器。 TreComBoxFamille.Items.Add(dreaderFamille);
  • 对我来说,在 2 个单独的(并且看似不相关的)查询中撤回显示文本和值似乎有点奇怪。如果这些值以某种方式相关,您可能应该对表进行连接并一次性提取所有数据(这也将节省往返数据库的行程)。我知道这并没有真正回答所问的问题,但除非我遗漏了什么,否则这是你真正应该看看的东西。
  • 那么该怎么做,因为我这样做是为了知道当数据库无法返回数据时问题出在哪里
  • 我想我误解了。没有意识到我们正在查看两个单独的下拉菜单。

标签: c# sql-server winforms combobox


【解决方案1】:

对于第二个组合框,您要添加数据阅读器 dreaderFamille

TreComBoxFamille.Items.Add(dreaderFamille);

虽然您应该添加 queryFamille

queryFamille = dreaderFamille[0].ToString();
TreComBoxFamille.Items.Add(queryFamille);

如果您注意ComboBox 中的项目文本,您会猜到问题,当您查看代码时,您会发现您的猜测是正确的。

【讨论】:

  • thnx,我不知道我怎么看不到它:(
  • 不客气 :) 如果你注意组合框中的项目文本,你会猜到它,然后你会看到你的猜测是真的 :)
【解决方案2】:

对于第二个组合框,您使用了错误的对象来添加

TreComBoxFamille.Items.Add(queryFamille);

【讨论】:

    【解决方案3】:

    你应该这样做:

    while (dreaderFamille.Read())
    {
        queryFamille = dreaderFamille[0].ToString();
        TreComBoxFamille.Items.Add(queryFamille);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多