如何将数据库表列名称值绑定到Windows窗体组合框?

如何将数据库表列名称值绑定到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); 
     } 

    } 
+0

阅读错误信息! –

+0

我读过它了,Part#列是字符串格式。它如何显示不能从'字符串'转换为'int'? – user3259951

+0

这是一个编译器错误,不是运行时,与您的列格式无关。简单来说,编译器告诉你,你有一个错误,并给你足够的消息信息。提示 - GetString(** int **) –

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

从选择获取第一列。