我试图从数据库的加载中填充组合框,我收到错误"无效的对象名称' 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);
}
非常感谢任何帮助
答案 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