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 进行数据操作时。但请注意,这种方式会将查询结果一次性加载到内存中,如果数据量较大,可能会对性能产生影响。你可以根据实际情况选择合适的数据访问方式。

相关推荐
杨云龙UP3 小时前
SQL Server2022部署:Windows Server 2016下安装、SSMS配置、备份还原与1433端口放通全流程_20260508
运维·服务器·数据库·sql·sqlserver·2022
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
墨染天姬4 小时前
【AI】cursor提示词小技巧
前端·数据库·人工智能
古月-一个C++方向的小白4 小时前
MySQL数据库——数据类型
android·数据库·mysql
qq_413502025 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
逸Y 仙X5 小时前
文章二十七:ElasticSearch ES查询模板(Search Template)高效复用实战
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
m0_738120726 小时前
应急响应(重点)——记一次某公司流量应急溯源分析(附带下载链接)
服务器·前端·数据库·安全·web安全·网络安全
yexuhgu6 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python
2301_779622416 小时前
mysql如何通过主从备份实现读写分离_配置mysql架构模式
jvm·数据库·python