提个小问题,顺便散点分,来者都有。。。

银狐被占用 2008-07-18 02:32:17
写了个很简单的程序,可取出来的数据总是少了一条,不知道是为什么,哪位高手帮解决一下,不胜感激。。
帮顶的都有分。
下面是程序代码,页面没做设置。

        SqlConnection Conn = DBClass.setConn();
string sql = "select * from t_user";
SqlCommand sCmd = new SqlCommand(sql, Conn);
Conn.Open();
SqlDataReader Dr = sCmd.ExecuteReader();
if (Dr.Read()) {
//DDL1.Items.Clear();
//DDL1.DataSource = Dr;
//DDL1.DataTextField = "username";
//DDL1.DataValueField = "pwd";
//DDL1.DataBind();
GridView1.DataSource = Dr;
GridView1.DataBind();
}
...全文
194 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaoyun71 2008-07-18
  • 打赏
  • 举报
回复
piaoyun71 2008-07-18
  • 打赏
  • 举报
回复
学习啊
sj6071 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ppp7p 的回复:]
你可以这样试一下
SqlConnection Conn = DBClass.setConn();
string sql = "select * from t_user";
SqlCommand sCmd = new SqlCommand(sql, Conn);
Conn.Open();
SqlDataReader Dr = sCmd.ExecuteReader();
GridView1.DataSource = Dr;
GridView1.DataBind();
[/Quote]
应该是这个
lovedean 2008-07-18
  • 打赏
  • 举报
回复
来这里接分的..
银狐被占用 2008-07-18
  • 打赏
  • 举报
回复
首先感谢大家这么热心的回复,特别感谢my22xo,zhnzzy,minhua1983给出正确的代码。
现在问题已经解决了。

来帮顶的都有分。。
loveksmy 2008-07-18
  • 打赏
  • 举报
回复
我是来接分的~
骑蚊子旅游 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 jiang_chao 的回复:]
我们老师说过不准有SqlDataReader;我来顶下
[/Quote]

不会吧
SqlDataReader 这个有时候用的也多吧。
为何不准用?
这个也有他的优点,到网上找找资料吧
骑蚊子旅游 2008-07-18
  • 打赏
  • 举报
回复
5楼是对的,只不过他没有写详细问题:)
jiang_chao 2008-07-18
  • 打赏
  • 举报
回复
我们老师说过不准有SqlDataReader;我来顶下
骑蚊子旅游 2008-07-18
  • 打赏
  • 举报
回复
1、先可以确定一点的是可以使用SqlDataReader绑定到GridView中的
2、第6楼的方式数据绑定后一条记录也没有了
3、其他人的方式用While的方式的,绑定后,顶多是剩下一条数据,大家都测试测试吧
allanmorgan 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 grearo 的回复:]
读到datatable中设置断点看看是否读出了3条记录
[/Quote]
骑蚊子旅游 2008-07-18
  • 打赏
  • 举报
回复
我发现了问题的本质:
if (Dr.Read()) {
GridView1.DataSource = Dr;
GridView1.DataBind();
}
Read()方法,首先,要知道SqlDataReader是一个向前的只读流,你已经执行了一个Dr.Read(),那么在Dr中就只有两条记录了,你不用这样判断的,直接赋值就可以了,代码改成如下方式:

SqlConnection Conn = DBClass.setConn();
string sql = "select * from t_user";
SqlCommand sCmd = new SqlCommand(sql, Conn);
Conn.Open();
SqlDataReader Dr = sCmd.ExecuteReader();
GridView1.DataSource = Dr;
GridView1.DataBind();


zhnzzy 2008-07-18
  • 打赏
  • 举报
回复
跟根看,Read了几遍
zhnzzy 2008-07-18
  • 打赏
  • 举报
回复
while(Dr.Read())
grearo 2008-07-18
  • 打赏
  • 举报
回复
读到datatable中设置断点看看是否读出了3条记录
new_Stone 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ppp7p 的回复:]
你可以这样试一下
SqlConnection Conn = DBClass.setConn();
string sql = "select * from t_user";
SqlCommand sCmd = new SqlCommand(sql, Conn);
Conn.Open();
SqlDataReader Dr = sCmd.ExecuteReader();
GridView1.DataSource = Dr;
GridView1.DataBind();
[/Quote]
harderLi 2008-07-18
  • 打赏
  • 举报
回复
谁说非用dataset
你这错误吃饱撑的,关机重起
amanizty 2008-07-18
  • 打赏
  • 举报
回复
直接用 datebale OR dataset 帮定嘛
安宁 2008-07-18
  • 打赏
  • 举报
回复
mark...
hongqi162 2008-07-18
  • 打赏
  • 举报
回复
直接Dr.Fill(DataTable)
加载更多回复(10)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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