ADO.NET数据读取:Command与DataReader详解
需积分: 3 179 浏览量
更新于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 上传
2021-08-15 上传
点击了解资源详情
huizai007
- 粉丝: 1
- 资源: 1
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全