Combobox没有从数据库C#填充

时间:2015-03-29 08:16:52

标签: c# combobox

我试图从数据库的加载中填充组合框,我收到错误"无效的对象名称' POOL'"

表单加载事件以填充表单加载下拉列表

private void FRMAddTeam_Load(object sender, EventArgs e)
    {
        if (CMBBXPool.Items.Count > 0)
            CMBBXPool.Items.Clear();

        Database.CLSDB DatabaseClass = new Database.CLSDB();
        DatabaseClass.FillDropDownList();

    }

这是我的数据库连接类

中的代码
    public void FillDropDownList()
    {
        string PoolName = "";
        Team.FRMAddTeam TeamAdd = new Team.FRMAddTeam();
        SqlConnection conn = GetConnection();
        string selStmt = "SELECT [Name] FROM dbo.TBL_pool";
        SqlCommand selCmd = new SqlCommand(selStmt, conn);
        try
        {
            conn.Open();
            SqlDataReader reader = selCmd.ExecuteReader();

            while (reader.Read())
            {
                PoolName = reader["Name"].ToString();


                TeamAdd.addPoolItem(PoolName);
            }
        }
        catch (SqlException ex) { throw ex; }
        finally { conn.Close(); }
        return;
    }

添加池名称的代码

    public void addPoolItem(string PoolName)
    {
        CMBBXPool.Items.Add(PoolName);

    }

enter image description here

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

听起来你没有桌子Pool。你确定它在那里吗?

登录您的SQL管理工作室并使用查询分析器运行相同的命令。

可能有很多原因如果您的架构不同或者您是否有权访问该表?或者您正在检查正确的数据库?

<强>更新

您应该尝试使用SELECT [Name] FROM dbo.TBL_Pool

答案 1 :(得分:1)

您的代码必须是:

public void FillDropDownList(Team.FRMAddTeam TeamAdd)
    {
        string PoolName = "";
        SqlConnection conn = GetConnection();
        string selStmt = "SELECT [Name] FROM dbo.TBL_pool";
        SqlCommand selCmd = new SqlCommand(selStmt, conn);
        try
        {
            conn.Open();
            SqlDataReader reader = selCmd.ExecuteReader();

            while (reader.Read())
            {
                PoolName = reader["Name"].ToString();
                TeamAdd.addPoolItem(PoolName);
            }
        }
        catch (SqlException ex) { throw ex; }
        finally { conn.Close(); }
        return;
    }

你可以从你的表单中调用它:

DatabaseClass.FillDropDownList(this);

这样可行,但强烈建议您更改数据库类的实现并删除与GUI的紧密耦合。

从数据库类填充GUI是错误的 - 而不是那样,您应该从数据库类返回数据并将数据绑定到GUI类中的GUI。

http://en.wikipedia.org/wiki/Loose_coupling

http://en.wikipedia.org/wiki/Object_orgy

http://en.wikipedia.org/wiki/Separation_of_concerns