当前位置:首页 > 行业动态 > 正文

c#数据库连接例子

C#数据库连接示例:该示例展示了在C#中如何通过代码连接到数据库,包括引入命名空间、设置连接字符串、创建连接对象、打开和关闭连接等步骤,为C#开发者提供了与数据库交互的基础方法。

在C#中进行数据库连接是一项常见的任务,无论是开发桌面应用程序、Web应用还是服务端程序,下面将通过一个详细的示例来展示如何在C#中连接到数据库,并执行基本的增删改查操作。

准备工作

确保你已经安装了以下工具和库:

Visual Studio(或任何支持C#的IDE)

.NET SDK

数据库系统(如SQL Server、MySQL、SQLite等)

对应的.NET数据提供程序(如System.Data.SqlClient、MySql.Data.MySqlClient等)

创建数据库和表

为了演示,我们将使用SQL Server作为数据库系统,并创建一个名为School的数据库和一个名为Students的表。

c#数据库连接例子

SQL
CREATE DATABASE School;
GO
USE School;
GO
CREATE TABLE Students (
    Id INT PRIMARY KEY IDENTITY,
    Name NVARCHAR(50),
    Age INT,
    Grade NVARCHAR(10)
);
GO

C#代码示例

我们将编写C#代码来连接这个数据库,并进行CRUD操作。

1 引入必要的命名空间

在你的C#项目中,首先需要引入必要的命名空间:

C#
using System;
using System.Data.SqlClient;

2 建立数据库连接

创建一个方法来建立与数据库的连接:

C#
public static SqlConnection GetConnection()
{
    string connectionString = "Server=your_server;Database=School;User Id=your_username;Password=your_password;";
    return new SqlConnection(connectionString);
}

请将your_serveryour_usernameyour_password替换为你的实际数据库服务器地址、用户名和密码。

3 插入数据

创建一个方法来向Students表中插入数据:

c#数据库连接例子

C#
public static void InsertStudent(string name, int age, string grade)
{
    using (SqlConnection conn = GetConnection())
    {
        string query = "INSERT INTO Students (Name, Age, Grade) VALUES (@Name, @Age, @Grade)";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Name", name);
            cmd.Parameters.AddWithValue("@Age", age);
            cmd.Parameters.AddWithValue("@Grade", grade);
            conn.Open();
            int rowsAffected = cmd.ExecuteNonQuery();
            Console.WriteLine($"Rows affected: {rowsAffected}");
        }
    }
}

4 查询数据

创建一个方法来查询Students表中的所有数据:

C#
public static void ListStudents()
{
    using (SqlConnection conn = GetConnection())
    {
        string query = "SELECT * FROM Students";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            conn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}, Age: {reader["Age"]}, Grade: {reader["Grade"]}");
            }
        }
    }
}

5 更新数据

创建一个方法来更新Students表中的数据:

C#
public static void UpdateStudent(int id, string name, int age, string grade)
{
    using (SqlConnection conn = GetConnection())
    {
        string query = "UPDATE Students SET Name = @Name, Age = @Age, Grade = @Grade WHERE Id = @Id";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Id", id);
            cmd.Parameters.AddWithValue("@Name", name);
            cmd.Parameters.AddWithValue("@Age", age);
            cmd.Parameters.AddWithValue("@Grade", grade);
            conn.Open();
            int rowsAffected = cmd.ExecuteNonQuery();
            Console.WriteLine($"Rows affected: {rowsAffected}");
        }
    }
}

6 删除数据

创建一个方法来删除Students表中的数据:

C#
public static void DeleteStudent(int id)
{
    using (SqlConnection conn = GetConnection())
    {
        string query = "DELETE FROM Students WHERE Id = @Id";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Id", id);
            conn.Open();
            int rowsAffected = cmd.ExecuteNonQuery();
            Console.WriteLine($"Rows affected: {rowsAffected}");
        }
    }
}

主程序入口

Main方法中调用这些方法来测试我们的数据库操作:

C#
class Program
{
    static void Main(string[] args)
    {
        // 插入数据
        InsertStudent("Alice", 20, "A");
        InsertStudent("Bob", 22, "B");
        
        // 列出所有学生
        ListStudents();
        
        // 更新数据
        UpdateStudent(1, "Alice Smith", 21, "A+");
        
        // 再次列出所有学生以查看更新效果
        ListStudents();
        
        // 删除数据
        DeleteStudent(2);
        
        // 最后列出所有学生以查看删除效果
        ListStudents();
    }
}

相关问答FAQs

Q1: 如果连接字符串中的密码包含特殊字符,应该如何处理?

c#数据库连接例子

A1: 如果连接字符串中的密码包含特殊字符,如@$,你需要对这些字符进行转义,将@替换为@@,建议使用安全的存储方式来管理数据库凭据,如环境变量或加密的配置文件。

Q2: 如何处理SQL注入攻击?

A2: 为了防止SQL注入攻击,应该始终使用参数化查询而不是直接拼接SQL字符串,在上面的示例中,我们使用了SqlParameter来传递参数,这就是一种防止SQL注入的有效方法,还可以考虑使用ORM框架(如Entity Framework)来进一步简化数据库操作并提高安全性。

小编有话说

通过上述示例,我们展示了如何在C#中连接到数据库并进行基本的CRUD操作,希望这些代码能够帮助你快速上手数据库编程,如果你有任何疑问或需要进一步的帮助,请随时留言!