DataReader、DataSet、DataAdapter和DataView使用介绍

DataReader、DataSet、DataAdapter和DataView是数据访问中常用的几个对象,下面我会详细介绍它们的作用和使用方法。

一、DataReader

DataReader是一种只读的、前向的数据流,用于对数据库进行查询操作。它可以一行一行地读取查询结果,不支持对数据进行修改,适用于大数据量查询,可以最大程度减少内存占用。使用DataReader进行数据读取的基本步骤如下:

  1. 使用Connection对象打开数据库连接。
  2. 创建Command对象并设置CommandText属性为查询语句。
  3. 使用Command对象创建DataReader对象,通过ExecuteReader方法执行查询。
  4. 调用DataReader对象的Read方法进行数据读取,直到Read返回false,则表示已读取完所有数据。
  5. 使用DataReader对象的GetXXX方法(如GetBoolean、GetInt32等方法)获取当前行指定列的值。

以下是一个示例代码,用于从数据库中读取数据并输出到控制台:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Students", conn))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine("{0}\t{1}\t{2}", reader.GetInt32(0), reader.GetString(1), reader.GetInt32(2));
            }
        }
    }
}

二、DataSet

DataSet是一个数据缓存对象,用于存储查询结果和关系型数据。它可以将查询结果存储到内存中,支持对数据进行修改、排序、过滤等操作,并可以将修改后的数据保存到数据库中。使用DataSet进行数据读取的基本步骤如下:

  1. 使用Connection对象打开数据库连接。
  2. 创建Command对象并设置CommandText属性为查询语句。
  3. 使用DataAdapter对象(下面会介绍)的Fill方法,将查询结果填充到DataSet中。
  4. 使用DataSet对象的Tables属性获取数据表,使用Rows属性获取数据行,使用Columns属性获取数据列。
  5. 修改DataSet中的数据。
  6. 使用DataAdapter对象的Update方法,将修改后的数据保存到数据库中。

以下是一个示例代码,用于从数据库中读取数据并将修改后的数据保存到数据库中:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand("SELECT * FROM Students", conn))
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
        {
            DataSet ds = new DataSet();
            adapter.Fill(ds);

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                row["Score"] = (int)row["Score"] + 10; // 修改数据
            }

            SqlCommandBuilder builder = new SqlCommandBuilder(adapter); // 自动生成更新语句
            adapter.Update(ds); // 保存修改后的数据到数据库中
        }
    }
}

三、DataAdapter

DataAdapter是一个连接数据库和DataSet之间的桥梁,用于填充DataSet和将修改后的数据保存到数据库中。它可以执行查询操作、插入操作、更新操作和删除操作,支持对数据进行排序、过滤等操作。使用DataAdapter进行数据读取和保存的基本步骤如下:

  1. 使用Connection对象打开数据库连接。
  2. 创建Command对象并设置CommandText属性为查询语句或更新语句。
  3. 创建DataAdapter对象,并使用Command属性设置DataAdapter对象的查询命令或更新命令。
  4. 使用DataAdapter对象的Fill方法,将查询结果填充到DataSet中(若是更新操作,则无需Fill)。
  5. 修改DataSet中的数据。
  6. 使用DataAdapter对象的Update方法,将修改后的数据保存到数据库中。

以下是一个示例代码,用于使用DataAdapter执行查询和插入操作:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (SqlDataAdapter adapter = new SqlDataAdapter())
    {
        adapter.SelectCommand = new SqlCommand("SELECT * FROM Students", conn);
        adapter.InsertCommand = new SqlCommand("INSERT INTO Students (Name, Age, Score) VALUES (@Name, @Age, @Score)", conn);
        adapter.InsertCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 50, "Name");
        adapter.InsertCommand.Parameters.Add("@Age", SqlDbType.Int, 0, "Age");
        adapter.InsertCommand.Parameters.Add("@Score", SqlDbType.Int, 0, "Score");

        DataSet ds = new DataSet();
        adapter.Fill(ds); // 将查询结果填充到DataSet中

        DataRow row = ds.Tables[0].NewRow(); // 创建新行
        row["Name"] = "David";
        row["Age"] = 20;
        row["Score"] = 80;
        ds.Tables[0].Rows.Add(row);

        adapter.Update(ds); // 将新行插入到数据库中
    }
}

四、DataView

DataView是基于DataSet的一个数据视图对象,用于对DataSet中的数据进行排序、过滤等操作。它可以将DataSet中的数据按照指定的条件进行排序,或者根据指定的条件进行筛选。使用DataView进行数据筛选的基本步骤如下:

  1. 使用Connection对象打开数据库连接。
  2. 创建Command对象并设置CommandText属性为查询语句。
  3. 使用DataAdapter对象将查询结果填充到DataSet中。
  4. 使用DataSet对象的Tables属性获取数据表,使用DefaultView属性获取数据视图。
  5. 使用DataView对象的Sort属性和RowFilter属性,对数据进行排序和筛选。

以下是一个示例代码,用于排序和筛选DataSet中的数据:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Students", conn))
    {
        DataSet ds = new DataSet();
        adapter.Fill(ds); // 将查询结果填充到DataSet中

        DataView dv = ds.Tables[0].DefaultView; // 获取数据视图
        dv.Sort = "Score DESC"; // 按Score降序排列
        dv.RowFilter = "Age > 18"; // 筛选年龄大于18的数据

        foreach (DataRowView row in dv)
        {
            Console.WriteLine("{0}\t{1}\t{2}", row["Id"], row["Name"], row["Score"]);
        }
    }
}

以上就是对DataReader、DataSet、DataAdapter和DataView的详细介绍和使用方法,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:DataReader、DataSet、DataAdapter和DataView使用介绍 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • 合金装备5幻痛称号怎么获得_全称号获得方法推荐

    合金装备5幻痛称号获得攻略 在合金装备5幻痛中,称号是一种特殊的奖励,可以展示玩家的游戏成就。本文将详细介绍获得所有称号的方法。 常规称号 战场回忆录 通过游玩战斗任务,在任务结果页面查看回放,即可获得此称号。 示例:完成第一章任务后,通过回放观看第一章的任务结果页面,获得“战场回忆录”称号。 战斗关照 在与敌人战斗时,保护同伴3次以上即可获得此称号。 示例…

    C# 2023年6月6日
    00
  • 从零开始学习jQuery (十) jQueryUI常用功能实战

    本篇文章主题是“从零开始学习jQuery (十) jQueryUI常用功能实战”,主要涉及jQueryUI常用组件实现的教程和示例。下面将对文章内容进行详细讲解。 一、jQueryUI介绍 本文主要介绍jQueryUI,它是一个基于jQuery的UI插件库,提供了多种常用UI组件,用于构建各种Web应用程序。常用的组件包括但不限于:对话框(dialog)、日…

    C# 2023年5月31日
    00
  • asp.net 多字段模糊查询代码

    请允许我详细讲解一下实现 ASP.NET 多字段模糊查询的完整攻略。以下是步骤和代码示例: 1. 创建 ASP.NET Web 应用程序 首先,在 Visual Studio 中创建一个 ASP.NET Web 应用程序。选择“Web Application(.NET Framework)”模板,名称为“MultiFieldFuzzySearch”,创建一个…

    C# 2023年5月31日
    00
  • MASAMinimalAPI:创建MinimalAPI项目

    项目准备 1.创建项目,选择webapi。取消勾选使用控制器。创建minimal Api项目 2.创建成功后MinimalAPI的接口直接写在program.cs中 3.引入nuget包:Masa.Contrib.Service.MinimalAPIs MinimalAPI改造 1. 在program.cs中加入以下内容 将原有的 var app = bui…

    C# 2023年5月5日
    00
  • c# 基于wpf,开发OFD电子文档阅读器

    首先,我们需要明确一下,OFD是一种国家标准文件格式,需要使用OFD阅读器来查看。因此,我们打算基于c#和wpf框架来开发一个OFD电子文档阅读器。下面是开发步骤: 步骤一:创建一个WPF项目 我们需要创建一个新的WPF项目,然后添加所需的引用。这些引用可能包括以下内容: OFD解析库: 我们需要使用OFD解析库来解析OFD文件,然后在WPF中显示它们。因此…

    C# 2023年6月1日
    00
  • C#中使用HttpDownLoadHelper下载文件实例

    这里为您详细讲解 C# 中使用 HttpDownLoadHelper 下载文件实例的完整攻略。 什么是 HttpDownLoadHelper? HttpDownLoadHelper 是 C# 中的一个类,它可以帮助我们建立 HTTP 连接,下载文件并管理下载过程。 HttpDownLoadHelper 的使用方法 下面我们逐步介绍 HttpDownLoadH…

    C# 2023年5月31日
    00
  • Unity 从Resources中动态加载Sprite图片的操作

    下面是详细讲解“Unity 从Resources中动态加载Sprite图片的操作”的完整攻略。 一、前言 在Unity中,我们可以将一些资源文件放在一个名为“Resources”的文件夹中。这些资源文件可以通过Resources.Load方法进行动态加载,其中包括图片、音频、视频等资源。在本文中,我们将详细讲解如何在Unity中动态加载Sprite图片。 二…

    C# 2023年6月3日
    00
  • 解析C#网络编程中的Http请求

    解析C#网络编程中的Http请求可以分为以下几个步骤: 1. 构造HttpWebRequest对象 在C#网络编程中,我们使用HttpWebRequest对象来发起一次HTTP请求。构造HttpWebRequest对象需要指定请求的URL、请求方法等参数。下面是一个构造HttpWebRequest对象的示例代码: HttpWebRequest request…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部