概述
上一节《C#+ADO.NET连接MSSQL Server数据库》,我们使用ADO.NET实现了基础的C#应用程序与SQL Server数据库连接功能。但这只是C#应用程序与SQL Server数据交互的开端。
连接数据库的目的当然是要对数据库、数据表的结构或者数据进行操作,如:创建数据库,创建/修改表结构,向数据表中写入数据,更新数据,查询数据甚至删除数据等等。
本节,我们将学习在C#应用程序中使用ADO.NET从SQL Server数据库中查询数据并在.NET 5的控制台应用程序中显示。
准备工作
在本节教程开始之前,先准备一张数据表并在其中填充测试用的数据。你可以在 Datum 这个数据生成网站生成模拟数据。
以下是笔者准备的SQL Server数据库的表结构脚本如下:
请点击这里获取完整示例脚本 —> C#+ADO.NET读取MSSQL Server数据库中的数据(示例SQL脚本)。
通过DataReader检索数据
要使用DataReader
检索数据,首先需要创建Command
对象的实例,然后通过调用Command.ExecuteReader()
方法以创建DataReader
并从数据源获取数据。当检索大量数据时,因为数据不会缓存在内存中,DataReader
是一个很好的选择。
以下是使用Command
创建DataReader
并从数据源检索数据的示例,代码如下:
示例代码中的:
\t
:制表符, {reader[“Email”],-30}:左对齐,如果少于30个字符,则用空格补齐
运行结果如下图:
读取DataReader
行中的列元素有两种方式,一种是上面示例的reader["列名"]
,另一种是通过列的索引方式,如:GetDateTime, GetDouble, GetGuid, GetInt32等等方法,如图:
其中:reader["列名"]
方式只需要指定正确的列名即可,得到的数据类型是object,而第二种调用Get方法需要知道数据源的原始数据类型,并且还要指定列的索引位置,而得到的是显式的数据类型,如图示:
注: DataReader没有直接返回数据行数的属性或方法。也就是说,你不能通过DataReader的实例直接得到当前实例中的总数据行数,想要得到当前DataReader实例的数据行数,需要自己实现(一种方案为:在循环中累加计数)。
特别注意: 在使用完后,请调用reader.Close()
方法关闭DataReader(本示例中使用了using
语句,会自动释放)。
通过DataSet检索数据
ADO.NET除了可以使用DataReader
检索数据外,还有DataSet
可以返回数据,且结果是一个数据集。
正如前面小节《ADO.NET五大核心对象》中介绍的,DataSet
(数据集)是ADO.NET的核心。DataSet
本质上是DataTable
对象的集合。每个对象依次包含一个DataColumn
和DataRow
对象的集合。数据集还包含一个关系集合,可用于定义数据表对象之间的关系。
DataSet是驻留于内存中的数据集,可以看做是内存中的数据库,内部用XML来描述数据。而数据集(DataSet
)与数据源之间检索和保存数据则是通过DataAdapter
这个数据适配器来完成的。
以下演示使用ADO.NET从SQL Server数据库中检索指定数据表并输出到.NET 5控制台应用程序,示例代码如下:
运行结果如下图:
发表评论
登录用户才能发表评论, 请 登 录 或者 注册