9.1 ADO.NET 基础
ADO.NET 是 .NET 框架中用于访问数据库的一组类库。它提供了连接、命令、数据读取器和数据适配器等组件,用于与数据库进行交互。
9.2 连接与操作数据库
使用 ADO.NET 连接数据库通常涉及以下步骤:
- 创建数据库连接。
- 创建命令对象并执行 SQL 语句。
- 使用数据读取器或数据适配器读取数据。
示例代码:
csharp
复制
using System;
using System.Data.SqlClient;
class Program
{
static void Main(string[] args)
{
string connectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM Users";
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("ID: " + reader["Id"] + ", Name: " + reader["Name"]);
}
reader.Close();
}
}
}
9.3 Entity Framework 简介
Entity Framework (EF) 是 .NET 中的一个对象关系映射 (ORM) 框架,它允许开发者以面向对象的方式操作数据库。
示例代码:
csharp
复制
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
class User
{
public int Id { get; set; }
public string Name { get; set; }
}
class MyDbContext : DbContext
{
public DbSet Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=localhost;Database=TestDB;User Id=sa;Password=your_password;");
}
}
class Program
{
static void Main(string[] args)
{
using (var context = new MyDbContext())
{
var users = context.Users.ToList();
foreach (var user in users)
{
Console.WriteLine("ID: " + user.Id + ", Name: " + user.Name);
}
}
}
}
9.4 LINQ to SQL
LINQ to SQL 是另一种 ORM 技术,允许开发者使用 LINQ 查询数据库。
示例代码:
csharp
复制
using System;
using System.Linq;
class User
{
public int Id { get; set; }
public string Name { get; set; }
}
class MyDataContext : System.Data.Linq.DataContext
{
public Table Users;
public MyDataContext(string connectionString) : base(connectionString) { }
}
class Program
{
static void Main(string[] args)
{
string connectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;";
using (var context = new MyDataContext(connectionString))
{
var users = from u in context.Users
where u.Name.StartsWith("J")
select u;
foreach (var user in users)
{
Console.WriteLine("ID: " + user.Id + ", Name: " + user.Name);
}
}
}
}
课后练习题
- 简答题:
- 什么是 ADO.NET?它的主要组件有哪些?
- Entity Framework 的主要优势是什么?
- LINQ to SQL 与 Entity Framework 的区别是什么?
- 编程题:
- 编写一个程序,使用 ADO.NET 连接数据库并插入一条新记录。
- 使用 Entity Framework 创建一个简单的 CRUD 应用程序。
- 编写一个程序,使用 LINQ to SQL 查询数据库并输出结果。