首页 新闻 会员 周边

在SqlDataReader.ExecuteReader()中如果有多个结果集,那么SqlDataReader.HasRows属性检测的是什么?

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-02 11:48

如标题

(在SqlDataReader.ExecuteReader()中如果有多个结果集,那么SqlDataReader.HasRows属性检测的是什么?)

中本傻的主页 中本傻 | 初学一级 | 园豆:167
提问于:2012-10-30 16:32
< >
分享
最佳答案
0

SqlDataReader和SqlDataAdapter不一样。SqlDataReader是建立连接后一行一行的读取数据。SqlCommand.ExecuteReader()只是返回一个数据集和指向下一个数据集的指针(即SqlDataAdapter),然后通过SqlDataAdapter.NextResult返回下一个数据集。HasRows判断是否有行,即当前返回的数据集是否存在行。

理解qlDataReader和SqlDataAdapter的区别 应该就好懂了。

嘻嘻 我是这样认为的

收获园豆:10
堂堂88 | 初学一级 |园豆:9 | 2012-10-30 17:09

你的结论是对的,即SqlDataReader.HasRows判断的是[当前结果集]是否包含一行或多行.

但是你得出这个结论的逻辑就不知道是不是对的了...

中本傻 | 园豆:167 (初学一级) | 2012-11-02 11:37
其他回答(4)
0

SqlDataReader.ExecuteReader()是获取的数据集,数据集中有多少条数据HasRows就是多少

收获园豆:5
sunlary | 园豆:934 (小虾三级) | 2012-10-30 16:40
0

所有数据集的行数

收获园豆:5
┢┦偉 | 园豆:1240 (小虾三级) | 2012-10-30 16:59
-1

还可能有多个结果集? 给sqlcommand绑定的sql语句或者存储过程能得到多个结果集?表示没看明白

正常都是一个结果集(多行) 然后read读出来,这里很灵活其实,一般都这么写:

List<Users> list = new List<Users>();

            SqlConnection connection = new SqlConnection(conn);
            string sql = "select * from Users";
            SqlCommand cmd = new SqlCommand(sql, connection);
            connection.Open();
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())   //一列一列读 读完返回false
            {
                Users user = new Users();
                user.ID = Convert.ToInt32(reader["ID"]);
                user.Name = reader["Name"].ToString();
                user.PassWord = reader["Password"].ToString();
                user.Description = reader["Description"].ToString();

                list.Add(user);
            }

            reader.Close();    //关闭SqlDataReader对象
            connection.Close();  //关闭数据库连接对象

            this.dataGridView1.DataSource = list;
oppoic | 园豆:770 (小虾三级) | 2012-10-30 17:04

虽然你很热情,但是答非所问,并且你的回答是错的!

支持(0) 反对(0) 中本傻 | 园豆:167 (初学一级) | 2012-11-02 11:51
0

当多个结果集的时候可以调用NextResult

reader.NextResult());

SqlDataReader.HasRows属性检测的是第一个结果集

Json | 园豆:27 (初学一级) | 2015-03-17 17:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册