当前位置:编程学习 > C#/ASP.NET >>

读入数据到list,哪里不对

 using (SqlConnection con = new SqlConnection(ConnectString))
            {
                try
                {
                    DataSet ds = new DataSet();
                    SqlCommand cmd=new SqlCommand (sql,con);
                    SqlDataReader dr = cmd.ExecuteReader();

                    int nFields = dr.FieldCount;
                    lv.Clear();

                    for (int i = 0; i < nFields ; i++)
                    {
                        lv.Columns.Add(dr.GetName(i), 100, HorizontalAlignment.Left);
                    }

                    int nRow = 0;
                    while (dr.Read())
                    {
                        // Create an array of subitems for quick insertion
                        // The subitems will be all fields in the row except for 
                        // the first field
                        String[] subitems = new String[nFields];
                        for (int i = 0; i < nFields; i++)
                        {
                            subitems[i] = dr[i].ToString();
                        }

                        // Insert a new item into the listview, and add the subitems at 
                        // the same time. The item will be the first field in the row
                        ListViewItem item = new ListViewItem(subitems, -1);
                        lv.Items.Add(item);
                        ++nRow;
                    }    
                }
                catch (SqlException ex)
                {
                    throw new Exception(ex.Message);
                } --------------------编程问答-------------------- 我目前能看出2个问题
一个是SqlConnection 没有open
在SqlDataReader dr = cmd.ExecuteReader();前要con.Open()
另一个是SqlDataReader 没有Close();
在while 外面要执行dr.Close();

--------------------编程问答--------------------
引用 1 楼 findcaiyzh 的回复:
我目前能看出2个问题
一个是SqlConnection 没有open
在SqlDataReader dr = cmd.ExecuteReader();前要con.Open()
另一个是SqlDataReader 没有Close();
在while 外面要执行dr.Close();

--------------------编程问答-------------------- using (SqlConnection con = new SqlConnection(ConnectString))
  {
  try
  {
   con.open();
  DataSet ds = new DataSet();
  SqlCommand cmd=new SqlCommand (sql,con);
  SqlDataReader dr = cmd.ExecuteReader();
  int nFields = dr.FieldCount;
  lv.Clear();
  for (int i = 0; i < nFields ; i++)
  {
  lv.Columns.Add(dr.GetName(i), 100, HorizontalAlignment.Left);
  }
  int nRow = 0;
 while (dr.Read())
  {
  for (int i = 0; i < nFields; i++)
  {
    String[] subitems = new String[nFields];
    subitems[i] = dr[i].ToString();
  }
  ListViewItem item = new ListViewItem(subitems, -1);
  lv.Items.Add(item);
  ++nRow;
  } 
  dr.Close();  
  }
  catch (SqlException ex)
  {
  throw new Exception(ex.Message);
  } 
 }
 
F11单步调试 --------------------编程问答-------------------- 单步调试 --------------------编程问答-------------------- 用 SqlDataAdapter Fill DataSet 或 DataTable

ListViewItem[] items = new ListViewItem[0];

foreach (DataRow row in table.Rows)
{
  ListViewItem item = new ListViewItem();
  item.Text = if(row[0] == null) ? "Null" : row[0].ToString();

  for(int i = 1; i< row.ItemArray.Length; i++)
  {
     item.SubItems.Add(row[i].ToString());
  }
  Array.Resize(ref items, items.Length + 1);
  items.SetValue (item, items.Length - 1);
} --------------------编程问答-------------------- listView1.Items.AddRange(items); --------------------编程问答-------------------- 给个错误信息看看
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,