在C#中,为了提高SQLHelper代码的复用性,可以采取以下几种方法:
- 创建一个基类:创建一个包含通用数据库操作方法的基类,例如ExecuteNonQuery、ExecuteScalar、ExecuteReader等。这样,其他具体的SQLHelper类可以继承这个基类,从而复用这些通用方法。
public abstract class BaseSqlHelper
{
public int ExecuteNonQuery(string connectionString, string sql)
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand(sql, connection))
{
return command.ExecuteNonQuery();
}
}
}
// 其他通用方法的实现...
}
- 使用泛型:创建一个泛型SQLHelper类,允许用户传入数据库类型、连接字符串等参数。这样,用户可以根据自己的需求创建特定类型的SQLHelper实例。
public class GenericSqlHelper : BaseSqlHelper where T : DbConnection
{
private readonly string _connectionString;
public GenericSqlHelper(string connectionString)
{
_connectionString = connectionString;
}
// 使用泛型方法,例如:
public T ExecuteNonQuery(string sql) where T : DbConnection
{
using (var connection = new T(_connectionString))
{
connection.Open();
using (var command = new SqlCommand(sql, connection))
{
return command.ExecuteNonQuery();
}
}
}
}
- 使用依赖注入:通过依赖注入将SQLHelper实例注入到需要使用数据库操作的地方,而不是在程序中直接创建实例。这样可以提高代码的可测试性和可维护性。
public interface ISqlHelper
{
int ExecuteNonQuery(string connectionString, string sql);
// 其他数据库操作方法的接口...
}
public class SqlHelper : ISqlHelper
{
public int ExecuteNonQuery(string connectionString, string sql)
{
// 实现方法...
}
}
在程序中使用依赖注入:
public class MyService { private readonly ISqlHelper _sqlHelper; public MyService(ISqlHelper sqlHelper) { _sqlHelper = sqlHelper; } // 使用_sqlHelper进行数据库操作... }
- 使用配置文件:将数据库连接字符串和其他配置信息存储在配置文件中,而不是硬编码在代码中。这样,当需要更改数据库配置时,只需修改配置文件即可,而无需修改代码。
{ "ConnectionStrings": { "MyConnectionString": "your_connection_string_here" } }
在程序中使用配置文件中的连接字符串:
public class MyService { private readonly ISqlHelper _sqlHelper; public MyService() { var connectionString = Configuration.GetConnectionString("MyConnectionString"); _sqlHelper = new SqlHelper(connectionString); } // 使用_sqlHelper进行数据库操作... }
通过以上方法,可以有效地提高C# SQLHelper代码的复用性,使代码更加简洁、可维护和可扩展。