使用事务的数据库增删改操作接口实现

需积分: 9 2 下载量 86 浏览量 更新于2024-09-10 收藏 7KB TXT 举报
本文档主要介绍了如何在.NET应用程序中通过`DataBase`类处理SQL Server数据库的增删改操作,特别是在事务控制下的执行。`DataBase`类是`BookShop.Common`命名空间中的一个工具类,用于简化数据库连接和管理。 首先,类中定义了两个属性:`connectString`用于存储数据库连接字符串,这是从Web配置文件中获取的,通过`ConfigurationSettings.AppSettings["conn"]`来获取。`connection`是SqlConnection对象,表示数据库连接。 `DataBase`类提供了几个关键方法: 1. `Open()` 方法:用于打开数据库连接。如果连接尚未创建或者已经关闭,会重新建立连接。这里使用`State.Equals(ConnectionState.Closed)`检查连接状态,确保只有在连接关闭时才重新打开。 2. `Close()` 方法:负责关闭当前的数据库连接,释放资源。 3. `GetConnection()` 方法:提供一个便捷的方式获取并打开连接,返回SqlConnection对象供其他方法使用。 4. `ExecuteNonQuery(SqlCommand cmd, CommandType ct, string cmdTxt, SqlParameter[] cmdParms)` 方法是核心操作方法,它接受四个参数: - `cmd`: 参数化SqlCommand对象,用于执行SQL命令。 - `ct`: 参数类型,可以是CommandType枚举中的值,如`Text`, `StoredProcedure`, `TableDirect`, `SqlClient`等。 - `cmdTxt`: 预先编译好的SQL语句,根据传入的命令类型,可能是原生SQL文本、存储过程名称等。 - `cmdParms`: 参数值数组,与SQL命令中的占位符对应,用于绑定实际数据。 这个方法内部首先创建一个新的SqlCommand对象,然后调用`Preparecommand`方法进行预编译,设置参数和命令类型。接下来,通过`cmd.ExecuteNonQuery()`执行SQL命令,完成数据的增删改操作。执行完毕后,使用`cmd.Parameters.Clear()`来清理SqlCommand对象中的参数,以避免内存泄漏。 在实际开发中,使用这种方式能够保证事务的一致性,尤其是在需要多个操作作为一组原子操作(即要么全部成功,要么全部回滚)时。通过传递SqlTransaction对象给ExecuteNonQuery方法,可以在执行过程中嵌套事务,实现更精细的控制。 这个`DataBase`类提供了一个轻量级、面向事务的数据库操作接口,简化了对SQL Server数据库的访问,提高了代码的可维护性和可靠性。