将序列号添加到SqlDataReader()检索的列表框项目中

时间:2016-04-03 16:59:42

标签: c# sqldatareader listboxitems

我没有什么问题我试图在我将从SQL Server数据库中检索的数据中添加序列号,如下所示。

public partial class Form1 : Form
{
    SqlConnection con = new SqlConnection(@"Server=.;database=test;integrated security=false;user id=sa;pwd=@admin00");
    SqlCommand com = new SqlCommand();

    SqlDataReader dr;

    public Form1()
    {
        InitializeComponent();
        com.CommandText = "select book_name from Table_book";
        com.Connection = con;
        con.Open();

        dr = com.ExecuteReader();

        while (dr.Read())
        {
            for (int i = 1; i <= dr.FieldCount; i++)
            {
                listBox1.Items.Add(i+"-"+dr[0].ToString());
                i += i;
            }
        }

        if (listBox1.Items.Count == 0)
        {
            MessageBox.Show("No Data Found");            
        }

        dr.Close();
        con.Close();
    }

结果将是这样的:

enter image description here

TY all

3 个答案:

答案 0 :(得分:0)

Add能够对对象进行操作,而不仅仅是对字符串进行操作。 为什么呢?

class ModelClass {

   // for use in algorithm, may be presented in GUI or not
   int Sequence { get; set; }

   string Description { get ; set ;}
   // ... what You want, is is typical model class

   override string ToString() { 
    // return what you want, is presented in GUI
    return Descrition; 
   }
   ModelClass( string n, int i ) ... 
}
 ...

  listBox.Items.Add( new ModelClass(i.ToString(), dr[...] // sequence )

现在,您可以从Items中检查任何内容,因为这些是ModelClass的对象。

手写的代码,未在IDE中测试过。

答案 1 :(得分:0)

我只是使用我的服务器Id序列来解决这个问题:

SqlConnection con = new SqlConnection(@"server=.;database=test;integrated security=false;user id=sa;pwd=@admin00");
        con.Open();
        SqlCommand sqlcom = new SqlCommand("select book_id,book_name from Table_book", con);
        SqlDataReader sqlDR=sqlcom.ExecuteReader();
        while(sqlDR.Read())
        {
        listBox1.Items.Add(sqlDR["book_id"].ToString()+"-"+sqlDR["book_name"].ToString());
        }

答案 2 :(得分:-1)

您正在设置&#34;序列号&#34;在使用dr.Read()迭代每一行时,结果中返回的字段的数量。 for循环不需要它。您应该做的是将计数器变量设置在dr.Read()之外,然后在...内增加...

int i = 1;
while (dr.Read())
{ 
    // set listbox item text
    listBox1.Items.Add(i.ToString() + "-" + dr[0].ToString());
     i+=1;
}