ado.net读取数据的两种方法
ADO.NET 是 .NET Framework 中用于访问数据库的重要组件,它提供了丰富的接口和类库来与各种数据库进行交互。本文将详细讲解使用 ADO.NET 读取数据的两种主要方法:使用 `Command` 和 `DataReader` 对象,以及使用 `DataAdapter` 和 `DataSet`。 1. 使用 `Command` 和 `DataReader` 对象读取数据 `SqlCommand` 类代表 SQL 命令,它可以用于执行 SQL 查询、存储过程等。`DataReader` 是一个只进、只读的数据流,用于高效地从数据库中获取数据。以下是使用这两个对象读取数据的基本步骤: ```csharp using System; using System.Data; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 创建数据库连接 SqlConnection conn = new SqlConnection("server=(local);Initial Catalog=pubs;Integrated Security=True"); // 创建 SQL 命令 string strsql = "SELECT pub_name FROM publishers"; SqlCommand comm = new SqlCommand(strsql, conn); try { // 打开数据库连接 conn.Open(); // 创建 SqlDataReader 对象 SqlDataReader sdt = comm.ExecuteReader(); // 逐行读取数据并处理 while (sdt.Read()) { // 获取指定列的值 string pubName = sdt["pub_name"].ToString(); // 处理数据,如添加到 ListBox ListBox1.Items.Add(pubName); } // 关闭 SqlDataReader sdt.Close(); } catch (SqlException ex) { Console.WriteLine(ex.ToString()); } finally { // 关闭数据库连接 conn.Close(); } } } } ``` 这种方法适用于以下情况: - 数据不需要被缓存,因为 `DataReader` 不会将所有结果加载到内存。 - 结果集非常大,内存可能无法容纳。 - 需要快速、向前的只读访问,因为 `DataReader` 只能按顺序读取数据,不能回溯。 2. 使用 `DataAdapter` 与 `DataSet` 读取数据 `DataAdapter` 是一个中间对象,它负责在 `DataSet` 和数据库之间传输数据。`DataSet` 是一个内存中的数据集合,可以保存多表数据并支持关系操作。以下是使用这两个对象读取数据的示例: ```csharp using System; using System.Data; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 创建数据库连接 SqlConnection conn = new SqlConnection("server=(local);Initial Catalog=pubs;Integrated Security=True"); // 创建 SQL 命令 string strsql = "SELECT pub_name FROM publishers"; SqlCommand comm = new SqlCommand(strsql, conn); try { // 创建 SqlDataAdapter SqlDataAdapter adapter = new SqlDataAdapter(comm); // 创建一个新的 DataSet DataSet dataSet = new DataSet(); // 使用 DataAdapter 填充 DataSet adapter.Fill(dataSet, "Publishers"); // 处理数据,如遍历 DataTable foreach (DataRow row in dataSet.Tables["Publishers"].Rows) { string pubName = row.Field<string>("pub_name"); ListBox1.Items.Add(pubName); } } catch (SqlException ex) { Console.WriteLine(ex.ToString()); } finally { // 关闭数据库连接 conn.Close(); } } } } ``` 使用 `DataAdapter` 和 `DataSet` 的优点是能够将数据完全加载到内存,方便进行复杂的操作,如分页、排序和过滤。但缺点是如果数据量大,可能会消耗大量内存。 总结: - `Command` 和 `DataReader` 适合处理大数据量,对内存占用小,但不支持数据的离线处理。 - `DataAdapter` 和 `DataSet` 可以在内存中保存整个数据集,方便进行离线操作,但不适合大数据量的情况。 根据实际需求选择合适的方法,平衡性能和功能,是使用 ADO.NET 进行数据库操作的关键。
剩余7页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MATLAB 图像处理:自动检测黑白像素比例的多功能代码(支持灰度和二值图像)
- windows平台下终端工具-tabby
- STM32和ucosii系统温度监控系统keil5工程
- HIVE-14706.01.patch
- C# WInForm IrisSkin2皮肤控件
- svn cleanup 失败怎么办
- Spring Boot集成Spring Security,HTTP请求授权配置:包含匿名访问、允许访问、禁止访问配置
- 易语言-画曲线模块及应用例程
- 电子元件行业知名厂商官网(TI/NXP/ST/Infineon/ADI/Microchip/Qualcomm/Diodes/Panasonic/TDK/TE/Vishay/Molex等)数据样例
- Cytoscape-3-10-0-windows-64bit.exe