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