上一篇
如何在C中连接数据库并实现增删操作?
- 行业动态
- 2025-05-12
- 10
C#可通过ADO.NET组件连接数据库实现增删操作,使用SqlConnection建立连接,通过SqlCommand执行INSERT/DELETE语句,建议采用参数化查询防止SQL注入,操作后需关闭连接释放资源,配合try-catch处理异常确保程序稳定性。
环境准备
- 数据库选择
推荐使用 SQL Server(免费版可用 Express 版本),其与 .NET 生态兼容性最佳。 - 创建测试表
使用以下 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}"); } } }
关键注意事项
- SQL 注入防御
务必使用参数化查询,而非字符串拼接,避免反面攻击。 - 资源释放
使用using
语句自动释放SqlConnection
和SqlCommand
对象,防止内存泄漏。 - 异常处理
try-catch
块捕获数据库操作中的错误(如连接超时、权限不足),提升程序健壮性。 - 连接池优化
ADO.NET 默认启用连接池,避免频繁开关连接,提高性能。
扩展知识
- ORM 框架
若需简化数据库操作,可学习 Entity Framework Core,通过 LINQ 语法实现增删改查。 - 异步编程
在高并发场景下,使用async/await
异步方法(如ExecuteNonQueryAsync
)提升吞吐量。 - 日志记录
记录数据库操作日志,便于排查问题(推荐使用 Serilog 或 NLog)。
权威参考
- 微软官方文档:SQL Server 连接字符串配置
- OWASP SQL 注入防御指南:参数化查询最佳实践
- 《C# 高级编程(第11版)》:深入讲解 ADO.NET 与数据库交互细节
通过以上方法,您可以安全、高效地实现 C# 与数据库的交互,同时符合开发规范与安全标准。