IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> C#如何从数据库SQLServer中同时读取多个结果集 -> 正文阅读

[大数据]C#如何从数据库SQLServer中同时读取多个结果集

当需要从数据库中同时读取多个结果集时,比如执行如下的sql语句:

select * from tblClass;select * from tblStudent;

同时从两个表格中获取结果,会获取两个结果集,此时需要使用SqlDataReader对象的NextResult()方法跳转到下一个结果集。


一、主函数

运行环境是控制台应用程序,下面的方法是main方法。

main方法流程主要如下:

1、定义了连接数据库的字符串

2、定义了同时查询两个表的sql语句的sql命令

3、定义了一个列表,用以存储读取到的数据

4、定义了一个方法,将读取到的每一个单元格的数据添加到列表中

5、定义了一个方法,当读取到每一行数据结尾时添加一个换行符到列表中

6、执行读取数据的方法

7、遍历列表,将列表的数据显示到控制台上

        /// <summary>
        /// 当同时查询多个表格,返回多个表格的数据时。
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //连接数据库语句
            string conStr = "server=.;database=Itcast2014;integrated security=true;";
            //当数据库查询语句有两条时,会返回两个结果集
            string cmdTxt = "select * from tblClass;select * from tblStudent;";
            //通过将数据增加到列表中的的方式读取数据
            List<object> lstResult = new List<object>();
            //将每一个单元格的数据后面加个制表符后添加到列表中
            Action<object> ReadCell = cell => { lstResult.Add(cell+"\t"); };
            //在每一行的结尾,将一个换行符增加到列表中
            Action RowEnd = () => { lstResult.Add("\r\n"); };
            //读取结果
            ReadAllResult(conStr,cmdTxt,ReadCell,RowEnd);
            //遍历结果集的列表
            foreach (var item in lstResult)
            {
                Console.Write(item);
            }
            Console.ReadKey();
        }

二、读取数据

这是读取数据的主要方法,和主函数在同一个命名空间下。?

ReadAllResult方法流程如下:

1、通过传入的连接数据库字符串连接数据库

2、通过传入的sql命令执行ExecuteReader方法

3、读取当前结果集的每一行数据

4、通过NextResult方法转到下一个结果集

        /// <summary>
        /// 读取多个结果集的Sql语句的方法
        /// </summary>
        /// <param name="conStr">连接字符串</param>
        /// <param name="cmdTxt">sql命令</param>
        /// <param name="ReadResult">传入一个方法,指定如何处理每一行每一个单元格的数据</param>
        /// <param name="RowEnd">传入一个方法,指定到每一行结尾时,如何处理</param>
        private static void ReadAllResult(string conStr,string cmdTxt,Action<object> ReadResult,Action RowEnd)
        {
            using (SqlConnection con = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(cmdTxt, con))
                {
                    con.Open();
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        //循环直到读取的结果集中没有行时
                        while (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                //对读取的当前行中遍历所有的列
                                for (int i = 0; i < reader.FieldCount; i++)
                                {
                                    //传入一个如何处理每一行每一个单元格数据的方法
                                    ReadResult(reader[i]);
                                }
                                //传入一个如何处理每一行结尾的方法
                                RowEnd();
                            }
                            //********要在这里读取下一个结果集***********
                            reader.NextResult();
                        }
                    }
                    con.Close();
                }
            }
        }

三、总结

这里主要是数据库的常用方法,以及使用了委托,来确定如何处理每一个数据,也可以直接Console.Write()。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:18:23  更:2022-06-01 15:20:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:57:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码