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

Add sequence number to the listbox items retrieved by SqlDataReader ()

我没有什么问题,我正在尝试在将从 SQL 服务器数据库检索的数据前面添加序列号,如下所示。

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();
    }

结果会是这样的:

TY全部

您将 "sequence number" 设置为结果中返回的 字段数 ,同时使用 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;
}

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.

中测试

我只是使用我的服务器 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());
        }