如何将数据库表列名称值绑定到Windows窗体组合框?
问题描述:
我想将列名称值绑定到组合框,但我得到一个错误。我做错了什么?如何将数据库表列名称值绑定到Windows窗体组合框?
我在这一行"string sName = MyReader.GetString("Part#");"
Error message:
Error 1 The best overloaded method match for 'System.Data.Common.DbDataReader.GetString(int)' has some invalid arguments
Error 2 Argument 1: cannot convert from 'string' to 'int'
得到错误。
void FillComboBox()
{
SqlCommand cmd = new SqlCommand("select * from tblInventory", con);
SqlDataReader MyReader;
try
{
con.Open();
MyReader = cmd.ExecuteReader();
while (MyReader.Read())
{
string sName = MyReader.GetString("Part#");
comboBox2.Items.Add(sName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答
见的GetString的文档: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executereader%28v=vs.110%29.aspx
这是从来没有很好的使用select *的代码。想一想,如果DBA在表中添加一个新列,会发生什么情况 - 代码的获取超出了设计的范围。指定您需要的列:
select Part# from tblInventory
string sName = MyReader.GetString(0);
从选择获取第一列。
阅读错误信息! –
我读过它了,Part#列是字符串格式。它如何显示不能从'字符串'转换为'int'? – user3259951
这是一个编译器错误,不是运行时,与您的列格式无关。简单来说,编译器告诉你,你有一个错误,并给你足够的消息信息。提示 - GetString(** int **) –