C#数据访问技术SqlClient/Odbc/OleDb/EF Core

System.Data.SqlClientSystem.Data.OdbcSystem.Data.OleDb 都是 .NET Framework 中用于数据访问的命名空间。

这些命名空间提供了不同的数据提供程序,用于连接、操作和管理不同类型的数据库。

  • System.Data.SqlClient 命名空间提供了与 SQL Server 数据库的连接和操作所需的类和接口。它是针对 SQL Server 数据库的 .NET Framework 数据提供程序。

  • System.Data.Odbc 命名空间提供了与 ODBC (Open Database Connectivity) 数据源的连接和操作所需的类和接口。它是针对使用 ODBC 驱动程序的数据库的 .NET Framework 数据提供程序。

  • System.Data.OleDb 命名空间提供了与 OLE DB (Object Linking and Embedding, Database) 数据源的连接和操作所需的类和接口。它是针对使用 OLE DB 提供程序的数据库的 .NET Framework 数据提供程序。

在 .NET 6 中,Microsoft 推荐使用 Entity Framework Core(EF Core)作为主要的数据访问技术,以替代传统的 System.Data 命名空间中的类。EF Core 提供了更现代、灵活和跨数据库平台的方式来进行数据访问。(System.Data 命名空间在 .NET 5、.NET 6 和 .NET 7 中仍然可用,但使用 EF Core 可以提供更强大和易用的数据访问功能,特别是在现代应用程序中。)

  • System.Data.SqlClient

using System;
using System.Data.SqlClient;

namespace MyApp
{
    class Program
    {
        static void Main()
        {
            string connectionString = "Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                string query = "SELECT * FROM Customers";

                using (SqlCommand command = new SqlCommand(query, connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            string customerName = reader["Name"].ToString();
                            Console.WriteLine(customerName);
                        }
                    }
                }
            }
        }
    }
}
  •  System.Data.Odbc

 System.Data.Odbc 命名空间提供了用于连接、执行查询和操作 ODBC 数据源的类和接口。它包含了一些重要的类,如 OdbcConnectionOdbcCommandOdbcDataReader 等,用于建立连接、执行 SQL 语句和读取查询结果。

using System;
using System.Data.Odbc;

namespace MyApp
{
    class Program
    {
        static void Main()
        {
            string connectionString = "Driver={SQL Server};Server=(local);Database=MyDatabase;Trusted_Connection=yes;";

            using (OdbcConnection connection = new OdbcConnection(connectionString))
            {
                connection.Open();

                string query = "SELECT * FROM Customers";

                using (OdbcCommand command = new OdbcCommand(query, connection))
                {
                    using (OdbcDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            string customerName = reader["Name"].ToString();
                            Console.WriteLine(customerName);
                        }
                    }
                }
            }
        }
    }
}
  •  System.Data.OleDb

System.Data.OleDb 命名空间是 .NET Framework 中用于与 OLE DB (Object Linking and Embedding, Database) 数据源进行连接和操作的命名空间。

OLE DB 是一种面向对象的数据库访问接口,它提供了一种标准化的方式来连接和操作不同类型的数据库,如 SQL Server、Oracle、Access 等。使用 OLE DB,你可以通过统一的接口访问各种不同的数据库系统。

System.Data.OleDb 命名空间提供了用于连接、执行查询和操作 OLE DB 数据源的类和接口。它包含了一些重要的类,如 OleDbConnectionOleDbCommandOleDbDataReader 等,用于建立连接、执行 SQL 语句和读取查询结果。

using System;
using System.Data.OleDb;

namespace MyApp
{
    class Program
    {
        static void Main()
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyDatabase.mdb;";

            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();

                string query = "SELECT * FROM Customers";

                using (OleDbCommand command = new OleDbCommand(query, connection))
                {
                    using (OleDbDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            string customerName = reader["Name"].ToString();
                            Console.WriteLine(customerName);
                        }
                    }
                }
            }
        }
    }
}
  • Entity Framework Core(EF Core)

在 .NET 6 中,System.Data 命名空间仍然存在,并提供了用于数据访问和数据库操作的核心类和接口。该命名空间包含了一些重要的类,如 DbConnectionDbCommandDbDataReader 等,用于建立数据库连接、执行 SQL 命令和读取查询结果。

然而,值得注意的是,在 .NET 6 中,Microsoft 推荐使用 Entity Framework Core(EF Core)作为主要的数据访问技术,以替代传统的 System.Data 命名空间中的类。EF Core 提供了更现代、灵活和跨数据库平台的方式来进行数据访问。

EF Core 提供了 ORM(对象关系映射)功能,使开发者可以通过定义实体类和关系来进行数据库操作,而不必直接编写 SQL 命令。它支持多种数据库提供程序,如 SQL Server、MySQL、PostgreSQL 等。

如果你正在使用 .NET 6,并且需要进行数据库操作,推荐使用 EF Core 来简化数据访问的过程。你可以使用 NuGet 包管理器或者 .NET CLI 来添加 EF Core 相关的包到你的项目中,然后根据 EF Core 的文档进行配置和使用。

using Microsoft.EntityFrameworkCore;
using System;

namespace MyApp
{
    public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class MyDbContext : DbContext
    {
        public DbSet<Customer> Customers { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("YourConnectionString");
        }
    }

    class Program
    {
        static void Main()
        {
            using (var context = new MyDbContext())
            {
                var customers = context.Customers.ToList();

                foreach (var customer in customers)
                {
                    Console.WriteLine(customer.Name);
                }
            }
        }
    }
}
  • System.Data 命名空间

在 .NET Framework 中,System.Data 命名空间是用于数据访问的核心命名空间之一。它提供了一组类和接口,用于连接到数据源、执行命令、读取和操作数据等操作。

System.Data 命名空间中包含了一些重要的类和接口,如:

  • DataSet:表示内存中的数据集,可包含多个数据表、关系和约束。
  • DataTable:表示内存中的数据表,包含多个数据行和列。
  • DataColumn:表示数据表中的列。
  • DataRow:表示数据表中的行。
  • DataAdapter:用于填充 DataSet 中的数据和更新数据源的类。
  • DbConnection:表示与数据库的连接。
  • DbCommand:表示要在数据库中执行的命令。
  • DbDataReader:用于从数据库中读取数据的类。

这些类和接口提供了一种通用的方式来进行数据访问,无论你使用的是哪种数据库类型(如 SQL Server、Oracle、MySQL 等),都可以使用这些类和接口来连接到数据库、执行命令和操作数据。

using System;
using System.Data;

namespace MyApp
{
    class Program
    {
        static void Main()
        {
            // 创建连接对象
            using (var connection = new System.Data.SqlClient.SqlConnection("YourConnectionString"))
            {
                // 打开连接
                connection.Open();

                // 创建命令对象
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT * FROM Customers";

                    // 创建数据适配器
                    using (var adapter = new System.Data.SqlClient.SqlDataAdapter(command))
                    {
                        // 创建数据集
                        var dataSet = new DataSet();

                        // 填充数据集
                        adapter.Fill(dataSet);

                        // 遍历数据集中的数据表和行
                        foreach (DataTable table in dataSet.Tables)
                        {
                            foreach (DataRow row in table.Rows)
                            {
                                Console.WriteLine(row["Name"]);
                            }
                        }
                    }
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/book_dw5189/article/details/131484827