首页 / 教程列表 / C#+ADO.NET数据库入门教程 / C#+ADO.NET读取MSSQL Server数据库中的数据

C#+ADO.NET读取MSSQL Server数据库中的数据

451 更新于: 2022-02-28 读完约需 5 分钟

概述

上一节《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对象的集合。每个对象依次包含一个DataColumnDataRow对象的集合。数据集还包含一个关系集合,可用于定义数据表对象之间的关系。

DataSet是驻留于内存中的数据集,可以看做是内存中的数据库,内部用XML来描述数据。而数据集(DataSet)与数据源之间检索和保存数据则是通过DataAdapter这个数据适配器来完成的。

以下演示使用ADO.NET从SQL Server数据库中检索指定数据表并输出到.NET 5控制台应用程序,示例代码如下:

运行结果如下图:

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

发表评论

登录用户才能发表评论, 请 登 录 或者 注册