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

如何在C中连接数据库并实现增删操作?

C#可通过ADO.NET组件连接数据库实现增删操作,使用SqlConnection建立连接,通过SqlCommand执行INSERT/DELETE语句,建议采用参数化查询防止SQL注入,操作后需关闭连接释放资源,配合try-catch处理异常确保程序稳定性。

环境准备

  1. 数据库选择
    推荐使用 SQL Server(免费版可用 Express 版本),其与 .NET 生态兼容性最佳。
  2. 创建测试表
    使用以下 SQL 语句创建示例表 Users

    CREATE TABLE Users (
        Id INT PRIMARY KEY IDENTITY(1,1),
        Name NVARCHAR(50) NOT NULL,
        Email NVARCHAR(100) NOT NULL
    );

C# 连接数据库的步骤

引入命名空间

using System.Data.SqlClient;

配置连接字符串

appsettings.json(或 Web.config)中配置数据库连接信息:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;"
  }
}

插入数据(INSERT)

通过参数化查询防止 SQL 注入,保障数据安全:

public void InsertUser(string name, string email)
{
    string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string sql = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
        SqlCommand command = new SqlCommand(sql, connection);
        command.Parameters.AddWithValue("@Name", name);
        command.Parameters.AddWithValue("@Email", email);
        try
        {
            connection.Open();
            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine($"{rowsAffected} 行数据插入成功。");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"错误:{ex.Message}");
        }
    }
}

删除数据(DELETE)

通过 WHERE 条件精准操作,避免误删:

public void DeleteUser(int userId)
{
    string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string sql = "DELETE FROM Users WHERE Id = @Id";
        SqlCommand command = new SqlCommand(sql, connection);
        command.Parameters.AddWithValue("@Id", userId);
        try
        {
            connection.Open();
            int rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine($"{rowsAffected} 行数据删除成功。");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"错误:{ex.Message}");
        }
    }
}

关键注意事项

  1. SQL 注入防御
    务必使用参数化查询,而非字符串拼接,避免反面攻击。
  2. 资源释放
    使用 using 语句自动释放 SqlConnectionSqlCommand 对象,防止内存泄漏。
  3. 异常处理
    try-catch 块捕获数据库操作中的错误(如连接超时、权限不足),提升程序健壮性。
  4. 连接池优化
    ADO.NET 默认启用连接池,避免频繁开关连接,提高性能。

扩展知识

  • ORM 框架
    若需简化数据库操作,可学习 Entity Framework Core,通过 LINQ 语法实现增删改查。
  • 异步编程
    在高并发场景下,使用 async/await 异步方法(如 ExecuteNonQueryAsync)提升吞吐量。
  • 日志记录
    记录数据库操作日志,便于排查问题(推荐使用 Serilog 或 NLog)。

权威参考

  • 微软官方文档:SQL Server 连接字符串配置
  • OWASP SQL 注入防御指南:参数化查询最佳实践
  • 《C# 高级编程(第11版)》:深入讲解 ADO.NET 与数据库交互细节

通过以上方法,您可以安全、高效地实现 C# 与数据库的交互,同时符合开发规范与安全标准。

0