白骑士的C#教学高级篇 3.4 数据库编程

21 篇文章 1 订阅

系列目录

上一篇:白骑士的C#教学高级篇 3.3 网络编程

        数据库编程是应用程序开发中的关键部分,涉及数据的存储、检索、更新和删除。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 控制台应用程序​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白骑士所长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值