为什么DataTable里面有的行,确产生了没有该行的错误呢?

dream00 2009-03-02 06:09:09
DataTable dt=new DataTable();
//这表里面有35000条记录
//然后因为某原因我给表加了3条记录,加的代码大致如下
DataRow dr=dt.NewRows();
dr["id"]=1;
dt.Rows.Add(dr);

然后再执行下面的循环,读取第35001的时候就出现了错误 "在位置 35001 处没有任何行"
for(int i=0;dt.Rows.Count;i++)
{
if(xx==dt.Rows[i]["id"].ToString()) //这句出错
{
//....
}
}

我觉得非常的奇怪了,,即然Rows.Count是面有这一行,,那为什么下面的比较又说这位置没有任何行。。
...全文
136 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppp7p 2009-03-03
  • 打赏
  • 举报
回复
建议使用foreach来循环。
love_幸运儿 2009-03-03
  • 打赏
  • 举报
回复
看来还是你那3行没有添加到For循环的表里
zgke 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 gaozhigang 的回复:]
35001就是没有行,行是从0开始当35000
[/Quote]
for(int i=0;dt.Rows.Count-1;i++)
{

}

是0开始索引的
gaozhigang 2009-03-03
  • 打赏
  • 举报
回复
35001就是没有行,行是从0开始当35000
wxd024 2009-03-03
  • 打赏
  • 举报
回复
你写的没有问题,只是for有点问题
//你的DataTable
DataRow dr = dt.NewRow();
dr["name"] = "www";
DataRow dr1 = dt.NewRow();
dr1["name"] = "qqq";
DataRow dr2 = dt.NewRow();
dr2["name"] = "eee";
dt.Rows.Add(dr);
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);

for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["name"].ToString()=="www")
{

}
}
sdav 2009-03-03
  • 打赏
  • 举报
回复
你是不是在For中执行了操作了?

如果没有的话,提交一下你的添加.

TableName.AcceptChanges();
cwmwss 2009-03-03
  • 打赏
  • 举报
回复
for(int i=0;i<dt.Rows.Count;i++)
{
if(xx==dt.Rows[i]["id"].ToString()) //这句出错
{
//....
}
}
Dobzhansky 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liudeqing2008 的回复:]
起是你没搞清楚一个问题。记住dt.Rows[i]的索引是0开始的,也就是说在最后的Count之后你还需要减一,如for(int i=0;dt.Rows.Count-1;i++)这样就不会报错了!
[/Quote]
汗, 眼力这么毒

看成那个 row 不属于表的错误了
liudeqing2008 2009-03-02
  • 打赏
  • 举报
回复
起是你没搞清楚一个问题。记住dt.Rows[i]的索引是0开始的,也就是说在最后的Count之后你还需要减一,如for(int i=0;dt.Rows.Count-1;i++)这样就不会报错了!
巴掌锅 2009-03-02
  • 打赏
  • 举报
回复
up~~~~~~~~~~~~~~~~~~~
qsd12n 2009-03-02
  • 打赏
  • 举报
回复
你有没有用updata更新数据库啊
Dobzhansky 2009-03-02
  • 打赏
  • 举报
回复
好像是微软的一个 bug,

DataTable 里头的行, 有时候, 即使你 Add 进去了,
RowState 还是 detached 状态,

你不妨看看那个出错行的 RowState,

最好在 Rows.Add 之后对 DataTable 执行一下 AcceptChanges 操作.
羽毛之家 2009-03-02
  • 打赏
  • 举报
回复
如果单按你这个代码里来看,你没有给表指定列ID字段
dt.Columns.Add("ID");
chen_dian_dian 2009-03-02
  • 打赏
  • 举报
回复
你找个是源码么?
这个循环的条件没有写啊
是因为这个索引越界么
for(int i=0;dt.Rows.Count;i++)
dream00 2009-03-02
  • 打赏
  • 举报
回复
我不是在dataTable后面有说明嘛,,有35000条数据,,我肯定有地方读进去的撒。。。

id那选项肯定都没有问题的了,不然在前面就出错了,,,

错就错在新加的3行,,读取其中的一行都不行,,不知道怎么回事。
love_幸运儿 2009-03-02
  • 打赏
  • 举报
回复
DataTable dt=new DataTable(); -----这个Table是空的,没有任何数据
//这表里面有35000条记录
//然后因为某原因我给表加了3条记录,加的代码大致如下
DataRow dr=dt.NewRows();
dr["id"]=1; 存在这一列吗?这些数据可以加进去吗?
dt.Rows.Add(dr);
若正常的话,监视当前dt里的数据
然后再执行下面的循环,读取第35001的时候就出现了错误 "在位置 35001 处没有任何行"
for(int i=0;dt.Rows.Count;i++)
{
if(xx==dt.Rows[i]["id"].ToString()) //这句出错
{
//....
}
}
love_幸运儿 2009-03-02
  • 打赏
  • 举报
回复
DataTable dt=new DataTable(); -----这个Table是空的,没有任何数据
//这表里面有35000条记录
//然后因为某原因我给表加了3条记录,加的代码大致如下
DataRow dr=dt.NewRows();
dr["id"]=1; 存在这一列吗?这些数据可以加进去吗?
dt.Rows.Add(dr);
若正常的话,监视当前dt里的数据
然后再执行下面的循环,读取第35001的时候就出现了错误 "在位置 35001 处没有任何行"
for(int i=0;dt.Rows.Count;i++)
{
if(xx==dt.Rows[i]["id"].ToString()) //这句出错
{
//....
}
}
dream00 2009-03-02
  • 打赏
  • 举报
回复
不是比较的问题。不是那变量的问题。。是DataTable那一行读取有错误。。。应该是动态添加行,,那里出了什么什么问题
che2piaopiao 2009-03-02
  • 打赏
  • 举报
回复

int xx=35001;
if(dt.Rows[i]["id"].ToString()==xx)
{
执行操作
}
che2piaopiao 2009-03-02
  • 打赏
  • 举报
回复
if(dt.Rows[i]["id"].ToString()==xx)   
加载更多回复(2)

111,126

社区成员

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

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

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