ADO.NET之SQL Server

ADO.NET是.NET平台上的一组用于访问和操作关系型数据库的API。它提供了一种以统一的方式连接到各种数据库系统并执行数据库操作的方法。现在有很多的ORM框架都是基于ADO.NET进行数据访问(比如:Entity Framework (EF)、Dapper、NHibernate

、FluentNHibernate等)。

ADO.NET有几个关键的组件:

  1. 数据提供程序(Data Provider):数据提供程序是用于连接到特定数据库系统并执行数据库操作的组件。每个数据库系统都有自己的数据提供程序。常见的数据提供程序包括SqlClient(用于连接到Microsoft SQL Server)、OracleClient(用于连接到Oracle数据库)等。

  2. 数据集(Dataset):数据集是ADO.NET中的一个重要概念,它是一个内存中的数据容器,用于存储从数据库中检索到的数据。数据集可以包含多个数据表,每个表可以包含多个数据行和数据列。通过数据集,我们可以在应用程序中操作和管理数据。

  3. 数据表适配器(Data Adapter):数据表适配器是用于从数据库中检索数据并将其填充到数据集中的组件。数据表适配器可以执行数据库查询并将结果填充到数据表中。它还可以将对数据表的更改反向传输到数据库。

  4. 命令对象(Command):命令对象用于执行数据库操作,如查询、插入、更新和删除。命令对象可以与数据提供程序一起使用,执行SQL语句或存储过程。

下面是一个使用ADO.NET进行数据库操作的示例:

  1. 创建实体类:
csharp 复制代码
public class Customer
{
    public int CustomerID { get; set; }
    public string CompanyName { get; set; }
}
  1. 执行查询并转换为实体集合:
csharp 复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;

public class Program
{
    static void Main()
    {
        string connectionString = "Data Source=(local);Initial Catalog=SampleDB;Integrated Security=True";
        string query = "SELECT * FROM Customers";

        List<Customer> customers = new List<Customer>();

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);

            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataTable dataTable = new DataTable();

            adapter.Fill(dataTable);

            foreach (DataRow row in dataTable.Rows)
            {
                Customer customer = new Customer
                {
                    CustomerID = Convert.ToInt32(row["CustomerID"]),
                    CompanyName = row["CompanyName"].ToString()
                };
                
                customers.Add(customer);
            }
        }

        foreach (var customer in customers)
        {
            Console.WriteLine($"CustomerID: {customer.CustomerID}, CompanyName: {customer.CompanyName}");
        }
    }
}

在这个示例中,我们创建了一个实体类 Customer,用于存储查询的结果。

然后我们使用 SqlConnection 建立数据库连接,并创建一个 SqlCommand 对象来执行查询。

接下来,我们实例化一个 SqlDataAdapter 对象,并使用它的 Fill 方法将查询结果填充到一个 DataTable 中。

然后,我们遍历 DataTable 中的每一行,并根据每一行的数据创建一个 Customer 实例,并将其添加到 List<Customer> 中。

最后,我们使用 foreach 循环遍历实体集合,并打印每个客户的 ID 和公司名称。

使用 DataAdapter 是一种常见的将查询结果转换为实体集合的方式,尤其是当你需要使用 DataTable 进行数据操作时。但请注意,这种方式会将查询结果一次性加载到内存中,如果数据量较大,可能会对性能产生影响。你可以根据实际情况选择合适的数据访问方式。

相关推荐
ZWZhangYu2 小时前
LangChain 构建向量数据库和检索器
数据库·langchain·easyui
feifeigo1233 小时前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
火龙谷4 小时前
【nosql】有哪些非关系型数据库?
数据库·nosql
焱焱枫5 小时前
Oracle获取执行计划之10046 技术详解
数据库·oracle
qq_392397127 小时前
Redis常用操作
数据库·redis·wpf
一只fish8 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
花好月圆春祺夏安9 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
A__tao9 小时前
SQL 转 Java 实体类工具
java·数据库·sql
m0_653031369 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
运维·数据库·腾讯云
江山如画,佳人北望10 小时前
C#程序入门
开发语言·windows·c#