关于while(Read())的问题!

itfly 2003-11-14 04:29:19
public String Return_ChildId(int FatherId)
{

if(FatherId!=0)
{
ChildStr="|"+Convert.ToString(FatherId);
String Sql="Select * from C_Table where Parentid="+FatherId;
OleDbCommand Cmd = new OleDbCommand(Sql,Conn.ConnDb());
OleDbDataReader Rs=Cmd.ExecuteReader();
if(Rs.Read()==true)
{
while(Rs.Read())
{
ChildStr+="|"+Convert.ToString(Rs["id"]);

}
}
}
return ChildStr;
}
Response.Write( Return_ChildId(1));
应该的结果是“|1|4|7|8”
结果却是:“|1|7|8”
好象使用while(Read())
{
}
会丢失掉第一行记录?!要怎么办?怎么改。
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
itfly 2003-11-14
  • 打赏
  • 举报
回复
哦。感谢!
ETstudio 2003-11-14
  • 打赏
  • 举报
回复
去掉if那行,因为你在if那读了一次,自然第一个就会不见
brightheroes 2003-11-14
  • 打赏
  • 举报
回复
问题在于这里
if(Rs.Read()==true)
{
while(Rs.Read())
{
ChildStr+="|"+Convert.ToString(Rs["id"]);

}
}
if(Rs.Read()已经让Rs的指针向前走了一个,所以你少第一个记录
将这个条件去掉,如下:
while(Rs.Read())
{
ChildStr+="|"+Convert.ToString(Rs["id"]);

}

110,499

社区成员

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

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

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