小弟刚学C#,想用listview显示一张SQL表中的所有数据,请问怎么写呢?private void LV_admin_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql = "select * from j_adminuser";
            SqlConnection myCon = new SqlConnection();
            myCon.ConnectionString = "server=.;uid=sa;pwd=123;database=book";            SqlCommand myCmd = new SqlCommand(sql,myCon);
            SqlDataReader myRed = myCmd.ExecuteReader();
                    }

解决方案 »

  1.   

       string sql = "select * from j_adminuser";
                SqlConnection myCon = new SqlConnection();
                myCon.ConnectionString = "server=.;uid=sa;pwd=123;database=book";            SqlCommand myCmd = new SqlCommand(sql, myCon);
                SqlDataReader myRed = myCmd.ExecuteReader();
              
                string[] _ValueText = new string[myRed.FieldCount];
                while (myRed.Read())
                {
                    for (int i = 0; i != _Value.Length; i++)
                    {
                        _ValueText[i] = myRed[i].ToString();
                    }
                    listView1.Items.Add(new ListViewItem(_ValueText));
                }
      

  2.   

    运行起来还是没有数据显示噢,
    自己做了小小改动还是不行,麻烦再帮忙看看:        private void LV_admin_SelectedIndexChanged(object sender, EventArgs e)
            {
                string sql = "select * from j_adminuser";
                SqlConnection myCon = new SqlConnection();
                myCon.ConnectionString = "server=.;uid=sa;pwd=123;database=book";            SqlCommand myCmd = new SqlCommand(sql,myCon);
                SqlDataReader myRed = myCmd.ExecuteReader();            string[] lvText = new string[myRed.FieldCount];
                while (myRed.Read())
                {
                    ListViewItem item = new ListViewItem(myRed.GetString(0));
                    item.SubItems.Add(myRed.GetString(1));
                    item.SubItems.Add(myRed.GetString(2));
                    item.SubItems.Add(myRed.GetString(3));
                    item.SubItems.Add(myRed.GetString(4));
                    item.SubItems.Add(myRed.GetString(5));
                    item.SubItems.Add(myRed.GetString(6));
                    item.SubItems.Add(myRed.GetDateTime(7).ToString());
                    item.SubItems.Add(myRed.GetString(8));
                    for (int i = 0; i != lvText.Length; i++)
                    {
                       lvText[i] = myRed[i].ToString();
                    }
                }         }顺便提一下,我那张表有9列噢
    userid,user_name,password,admin,del,add,update,crdate,cruser
      

  3.   

    写在你的while循环里              //创建一个ListView项
                    ListViewItem lviStudy = new ListViewItem(id.ToString());
                    //为ListView添加一个新项
                    lvStudy.Items.Add(lviStudy);
                    //为ListView添加子项
                    lviStudy.SubItems.AddRange(new string[] {查出的第二列值,第三列,四列 ,.... }); (记住要注意好类型之间的转换。全部要转换成string的)
      

  4.   

    你吧这段代码放在form_load 事件里应该可以啦,少列一项是没有问题,要是多列一就有问题啦
      

  5.   


    这里为什么是用while (myRed.Read()){}````其他的都能理解```就这里有点理解不了```我做过是用if(myRed.Read())的```用while()这样不会出现死循环吗```初学```望指点```
      

  6.   

    呵呵,我也不太明白,不这过句话,书上也是这么写的噢
    while (myRed.Read())
    {}````
      

  7.   


     string sql = "select * from j_adminuser"; 
                SqlConnection myCon = new SqlConnection(); 
                myCon.ConnectionString = "server=.;uid=sa;pwd=123;database=book";             SqlCommand myCmd = new SqlCommand(sql, myCon); 
                SqlDataReader myRed = myCmd.ExecuteReader(); 
              
                string[] _ValueText = new string[myRed.FieldCount]; 
                //if 和while 都可以 楼主基础还要加强啊。
                  //你可以这样理解:当执行命令成功,返回TRUE,也就是 while(true)
                //此时为真,执行一下的句子,如果不能读取,就是FALSE,不执行,也就不显示了
                while (myRed.Read())  
                { 
                    for (int i = 0; i != _Value.Length; i++) 
                    { 
                        _ValueText[i] = myRed[i].ToString(); 
                    } 
                    listView1.Items.Add(new ListViewItem(_ValueText)); 
                } 
                //*显示数据的方法有很多,你可以用适配器,也可以直接绑定数据
                  不过这都要靠多学习,多写代码才能理解*//
      

  8.   


    先谢谢 Lisons_jie 再问一下```按上面代码那样````myRed.Read()中读到的是"select * from j_adminuser"取得的所有记录还是只是其中的一条记录```?
      

  9.   

    myRed.Read() 是读下一行 
      

  10.   

    根据SQL来执行得到一个想的的表如dt
    foreach(DataRow row in dt)
    {
    listview1.items.add(row["显示的列名"])
    }
      

  11.   

    请问nick_fire:
    string sql = "select * from j_adminuser"; 
                SqlConnection myCon = new SqlConnection(); 
                myCon.ConnectionString = "server=.;uid=sa;pwd=123;database=book";             SqlCommand myCmd = new SqlCommand(sql, myCon); 
                SqlDataReader myRed = myCmd.ExecuteReader(); 
              
                string[] _ValueText = new string[myRed.FieldCount]; 
                //if 和while 都可以 楼主基础还要加强啊。
                  //你可以这样理解:当执行命令成功,返回TRUE,也就是 while(true)
                //此时为真,执行一下的句子,如果不能读取,就是FALSE,不执行,也就不显示了
                while (myRed.Read())  
                { 
                    for (int i = 0; i != _Value.Length; i++) 
                    { 
                        _ValueText[i] = myRed[i].ToString(); 
                    } 
                    listView1.Items.Add(new ListViewItem(_ValueText)); 
                } 
                //*显示数据的方法有很多,你可以用适配器,也可以直接绑定数据
                  不过这都要靠多学习,多写代码才能理解*//
    请问最后一句是什么意思:listView1.Items.Add(new ListViewItem(_ValueText)); 
    还有最后一句的:listView1从哪里来的?
      

  12.   

    请问最后一句是什么意思:listView1.Items.Add(new ListViewItem(_ValueText));
    将这些ListViewItem 添加进去,listView1从哪里来的? 自己添加一个listView1就好了,也可以自己用代码写
      

  13.   

    你可以自己拖一个LISTVIEW放进去,然后点列集合项添加,最后去窗体初始化那里看一下代码就知道了
      

  14.   

    不好意思,这几天没怎么进,
    继续上面的吧。你说myRed.Read()中读到的是"select * from j_adminuser"取得的所有记录还是只是其中的一条记录```?如果你用if(myRed.Read()){.....}读到的只有一天记录
    又while(myRed.Read()){.....}读取到的就是你那张表里所以的记录