上一篇
如何在C中高效实现数据库连接与更新操作?
- 行业动态
- 2025-05-12
- 5
C#通过ADO.NET连接数据库,使用SqlConnection对象配置连接字符串(服务器、数据库、身份验证),SqlCommand执行SQL语句,更新数据时,建议参数化查询防止注入,调用ExecuteNonQuery()方法,配合using或try/catch确保资源释放与异常处理。
连接数据库的方法
使用 ADO.NET 连接
ADO.NET是微软官方推荐的数据访问技术,支持多种数据库(如SQL Server、MySQL等)。
步骤示例(以SQL Server为例):
using System.Data.SqlClient; string connectionString = "Server=服务器地址;Database=数据库名;User Id=用户名;Password=密码;"; using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("数据库连接成功!"); // 后续操作(查询、更新等) } catch (Exception ex) { Console.WriteLine($"连接失败:{ex.Message}"); } }
- 关键点:
using
语句自动释放资源,避免内存泄漏。- 连接字符串建议存储在
appsettings.json
或配置文件中,避免硬编码。
使用 Entity Framework Core(现代化ORM框架)
Entity Framework Core(EF Core)通过对象关系映射简化数据库操作,支持Code First和Database First模式。
安装NuGet包:
Microsoft.EntityFrameworkCore.SqlServer
示例代码:
public class ApplicationDbContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=服务器地址;Database=数据库名;User Id=用户名;Password=密码;"); } } // 连接数据库 using (var context = new ApplicationDbContext()) { var users = context.Users.ToList(); // 查询示例 }
更新数据库的方法
使用ADO.NET执行更新操作
通过SqlCommand
对象执行SQL语句,支持增删改操作。
示例(更新数据):
string updateQuery = "UPDATE Users SET Name=@Name WHERE Id=@Id"; using (SqlCommand command = new SqlCommand(updateQuery, connection)) { command.Parameters.AddWithValue("@Name", "新用户名"); command.Parameters.AddWithValue("@Id", 1); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"更新了{rowsAffected}行数据"); }
重要提示:
- 参数化查询可防止SQL注入攻击。
- 事务处理:建议通过
SqlTransaction
保证操作的原子性。
使用EF Core更新数据
通过修改实体对象的状态实现数据更新。
示例:
using (var context = new ApplicationDbContext()) { var user = context.Users.FirstOrDefault(u => u.Id == 1); if (user != null) { user.Name = "新用户名"; context.SaveChanges(); // 提交更改 } }
- 优势:无需编写SQL语句,代码可读性高。
- 适用场景:复杂业务逻辑或频繁变更的数据模型。
安全与性能优化建议
- 连接池管理
ADO.NET默认启用连接池,避免频繁打开/关闭连接。 - 异常处理
使用try-catch
捕获数据库异常,记录日志以便排查。 - 异步操作
EF Core支持SaveChangesAsync()
等异步方法,提升并发性能。 - 配置加密
对数据库连接字符串加密,防止敏感信息泄露。
常见问题解答
- Q:连接数据库时报错“无法打开登录”?
A:检查用户名/密码是否正确,或确认SQL Server允许远程连接。 - Q:EF Core更新数据后未生效?
A:确认是否调用SaveChanges()
,并检查实体状态是否正确。
引用说明
本文参考微软官方文档:
- ADO.NET Overview
- EF Core Documentation