读入数据到list,哪里不对

20004 2011-01-16 02:14:49
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);
}
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangquanlaohou 2011-01-16
  • 打赏
  • 举报
回复
单步调试
wuyq11 2011-01-16
  • 打赏
  • 举报
回复
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单步调试
xiaoqiu1234 2011-01-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 findcaiyzh 的回复:]
我目前能看出2个问题
一个是SqlConnection 没有open
在SqlDataReader dr = cmd.ExecuteReader();前要con.Open()
另一个是SqlDataReader 没有Close();
在while 外面要执行dr.Close();
[/Quote]
宝_爸 2011-01-16
  • 打赏
  • 举报
回复
我目前能看出2个问题
一个是SqlConnection 没有open
在SqlDataReader dr = cmd.ExecuteReader();前要con.Open()
另一个是SqlDataReader 没有Close();
在while 外面要执行dr.Close();

MOTA 2011-01-16
  • 打赏
  • 举报
回复
给个错误信息看看
龍过鸡年 2011-01-16
  • 打赏
  • 举报
回复
listView1.Items.AddRange(items);
龍过鸡年 2011-01-16
  • 打赏
  • 举报
回复
用 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);
}

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧