组合框未从数据库 C# 中填充

Combobox not filling from database C#

我正在尝试从数据库加载来填充组合框,但出现错误 "Invalid object name '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();

    }

这是我的数据库连接中的代码class

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

    }

非常感谢任何帮助

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

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

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

更新:

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

您的代码必须是:

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

这会起作用,但是强烈建议更改数据库的实现 class 并消除与 GUI 的紧密耦合。

从数据库 class 填充 GUI 是错误的 - 相反,您应该 return 来自数据库 class 的数据并将数据绑定到GUI中的GUI class.

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

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

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