.NET学习(三)用DataSet缓存数据库中的数据

本博客详细介绍了如何使用DataSet和DataAdapter从数据库中提取数据,并将其存储在内存中的DataSet对象中。提供了完整的代码示例,包括创建连接、执行SQL查询、填充DataSet以及将数据绑定到UI控件的过程。此外,还对比了使用DataSet和DataReader的场景选择,强调了在不同需求下的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DataSet的使用

DataSet相当于一个数据缓存容器。
DataAdapter用于将数据从数据库中提取出来,存放到DataSet对象中。

大致有以下五个步骤:
1.实例化一个DataAdapter对象。
(注意:以下命名空间均在MySql环境下!!使用其他数据库的同学请选择相应的库)

MySqlDataAdapter dataAdapter = new MySqlDataAdapter();

2.将之前的Command对象(详见上篇或者下例)赋给相应的dataAdapter的command变量。

dataAdapter.SelectCommand = command;

3.实例化一个DataSet对象。

DataSet dataSet = new DataSet();

4.将DataAdapter的执行结果(Select SQL 语句返回值)填充到DataSet对象中。

dataAdapter.Fill(dataSet);

5.使用DataSet中的数据。

eg:dataSet.Tables[0] //返回DataSet对象中的第一个表

完整代码示例:
(UI控件只有一个GridView,用于显示查取到的整个表)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MySqlConnection connection = new MySqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Con"]
            .ConnectionString.ToString());
        try
        {
            connection.Open();
            MySqlCommand command = new MySqlCommand("SELECT * FROM login", connection);
            MySqlDataAdapter dataAdapter = new MySqlDataAdapter();
            dataAdapter.SelectCommand = command;
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet);
            this.GridView1.DataSource = dataSet.Tables[0].DefaultView;
            this.GridView1.DataBind();
        }
        catch(Exception err)
        {

        }
        finally
        {
            connection.Close();
        }

    }
}

运行结果:
运行结果

DataSet与DataReader的选择

一般情况下,DataReader的速度不仅比DataSet块,而且其使用的内存也较小(DataSet相当于缓存),如果数据绑定控件不需要提供排序或分页功能,最好使用DataReader。否则使用DataSet。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值