系列目录
数据库编程是应用程序开发中的关键部分,涉及数据的存储、检索、更新和删除。C# 提供了强大的工具和框架来简化数据库编程过程。在本节中,我们将介绍 ADO.NET 基础、使用 Entity Framework 以及数据库连接与操作的详细内容。
ADO.NET 基础
ADO.NET 是一个用于数据访问的框架,提供了对数据库进行连接、命令执行和数据处理的能力。它主要由以下几个核心组件组成:
- ‘Connection‘: 用于连接到数据源。
- ‘Command‘: 用于执行 SQL 语句或存储过程。
- ‘DataReader‘: 用于读取数据。
- ‘DataAdapter‘ 和 ‘DataSet‘: 用于填充数据和处理离线数据。
连接到数据库
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("Connection opened successfully.");
}
}
}
在这个示例中,使用 ‘SqlConnection‘ 类连接到 SQL Server 数据库。
执行查询
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM Employees";
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"ID: {reader["EmployeeID"]}, Name: {reader["FirstName"]} {reader["LastName"]}");
}
}
}
}
在这个示例中,使用 ‘SqlCommand‘ 类执行查询,并通过 ‘SqlDataReader‘ 读取数据。
使用 Entity Framework
Entity Framework (EF) 是一个对象关系映射 (ORM) 框架,它简化了数据库访问,通过将数据库表映射为对象,使开发者可以使用面向对象的方式进行数据操作。
安装 Entity Framework
首先,确保您在项目中安装了 Entity Framework 包。可以使用 NuGet 包管理器安装:
Install-Package EntityFramework
定义模型
using System.ComponentModel.DataAnnotations;
public class Employee
{
[Key]
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
定义上下文
using System.Data.Entity;
public class MyDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
}
使用上下文进行数据库操作
using System;
using System.Linq;
public class Program
{
public static void Main()
{
using (var context = new MyDbContext())
{
// 添加新员工
var newEmployee = new Employee { FirstName = "John", LastName = "Doe" };
context.Employees.Add(newEmployee);
context.SaveChanges();
Console.WriteLine("Employee added successfully.");
// 查询员工
var employees = context.Employees.ToList();
foreach (var employee in employees)
{
Console.WriteLine($"ID: {employee.EmployeeID}, Name: {employee.FirstName} {employee.LastName}");
}
}
}
}
在这个示例中,使用 Entity Framework 添加新员工并查询员工信息。
数据库连接与操作
C# 提供了多种方式连接和操作数据库,包括直接使用 ADO.NET 或通过 ORM 框架如 Entity Framework。无论选择哪种方式,以下是一些常见的数据库操作示例:
插入数据
使用 ADO.NET
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "INSERT INTO Employees (FirstName, LastName) VALUES (@FirstName, @LastName)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@FirstName", "Jane");
command.Parameters.AddWithValue("@LastName", "Smith");
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) inserted.");
}
}
}
使用 Entity Framework:
using System;
public class Program
{
public static void Main()
{
using (var context = new MyDbContext())
{
var newEmployee = new Employee { FirstName = "Jane", LastName = "Smith" };
context.Employees.Add(newEmployee);
context.SaveChanges();
Console.WriteLine("Employee added successfully.");
}
}
}
更新数据
使用 ADO.NET
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "UPDATE Employees SET LastName = @LastName WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@LastName", "Johnson");
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) updated.");
}
}
}
使用 Entity Framework
using System;
using System.Linq;
public class Program
{
public static void Main()
{
using (var context = new MyDbContext())
{
var employee = context.Employees.FirstOrDefault(e => e.EmployeeID == 1);
if (employee != null)
{
employee.LastName = "Johnson";
context.SaveChanges();
Console.WriteLine("Employee updated successfully.");
}
}
}
}
删除数据
使用 ADO.NET
using System;
using System.Data.SqlClient;
public class Program
{
public static void Main()
{
string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=username;Password=password";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "DELETE FROM Employees WHERE EmployeeID = @EmployeeID";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@EmployeeID", 1);
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"{rowsAffected} row(s) deleted.");
}
}
}
使用 Entity Framework
using System;
using System.Linq;
public class Program
{
public static void Main()
{
using (var context = new MyDbContext())
{
var employee = context.Employees.FirstOrDefault(e => e.EmployeeID == 1);
if (employee != null)
{
context.Employees.Remove(employee);
context.SaveChanges();
Console.WriteLine("Employee deleted successfully.");
}
}
}
}
总结
在本节中,我们探讨了 C# 中进行数据库编程的多种方法,包括 ADO.NET 基础、使用 Entity Framework,以及数据库连接与操作。通过掌握这些技术,您可以高效地管理和操作数据库,从而提升应用程序的功能和性能。继续学习 C# 的高级特性,将使您成为更为高效和熟练的开发者。
下一篇:白骑士的C#教学实战项目篇 4.1 控制台应用程序