ADO.NET数据读取:Command与DataReader详解
需积分: 3 37 浏览量
更新于2024-09-30
收藏 35KB DOC 举报
"这篇教程详细介绍了ADO.NET中读取数据的两种主要方法,适用于编程初学者。"
在ADO.NET中,我们通常使用两种方法来读取数据库中的数据:`SqlDataReader` 和 `DataSet`。这两种方法各有特点,适用于不同的场景。
1. 使用`Command`和`Datareader`对象读取数据
`SqlDataReader` 是一种只进式的数据流,它能高效地读取大量数据,因为它只保持对当前行的访问,不占用大量内存来存储所有数据。以下是如何使用`SqlDataReader`的示例:
```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对象
SqlCommand comm = new SqlCommand(strsql, conn);
try
{
// 打开数据库连接
conn.Open();
// 创建SqlDataReader对象
SqlDataReader sdt = comm.ExecuteReader();
// 使用SqlDataReader遍历数据
while (sdt.Read())
{
// 将每条记录的pub_name字段添加到ListBox1中
ListBox1.Items.Add(sdt["pub_name"].ToString());
}
}
finally
{
// 关闭数据库连接
conn.Close();
}
}
}
}
```
在这个例子中,我们首先创建一个`SqlConnection`实例,然后定义SQL查询语句,并通过`SqlCommand`对象执行这个查询。接着,使用`ExecuteReader`方法创建一个`SqlDataReader`实例,通过`Read()`方法逐行读取结果,并将数据添加到控件中。
2. 使用`Command`和`DataSet`对象读取数据
`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对象
SqlCommand comm = new SqlCommand(strsql, conn);
try
{
// 打开数据库连接
conn.Open();
// 创建SqlDataAdapter对象
SqlDataAdapter adapter = new SqlDataAdapter(comm);
// 创建一个新的DataSet
DataSet dataSet = new DataSet();
// 使用SqlDataAdapter填充DataSet
adapter.Fill(dataSet, "Publishers");
// 遍历DataSet中的数据
foreach (DataRow row in dataSet.Tables["Publishers"].Rows)
{
ListBox1.Items.Add(row["pub_name"].ToString());
}
}
finally
{
// 关闭数据库连接
conn.Close();
}
}
}
}
```
这里,我们创建了`SqlDataAdapter`对象,用于填充`DataSet`。`Fill`方法会将所有查询结果加载到`DataSet`的一个表中,然后我们可以遍历`DataSet`的`Rows`集合来访问数据。
总结来说,`SqlDataReader`适用于只需要一次遍历且数据量较大的情况,而`DataSet`则适合需要多次访问或在内存中操作数据的场景。选择哪种方法取决于具体的应用需求和性能考虑。
2020-08-26 上传
2010-07-14 上传
2009-04-19 上传
2009-06-02 上传
2011-12-24 上传
2008-06-04 上传
点击了解资源详情
点击了解资源详情
huizai007
- 粉丝: 1
- 资源: 1
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程