netcoreDBHelper不是ORM框架,只是对.netcore中数据库操作的封装。封装的意义在于使用DBHelper进行数据库操作时,将操作代码和具体的数据库隔离开,在未来如果需要更换数据库便不需要修改操作代码,只需简单的替换数据提供者和数据源配置信息。
目前支持Sqlite、Sqlserver、Mysql、Oracle、PostgreSQL、达梦数据库,理论上只要实现了微软数据提供者接口的关系型数据库都能得到支持,各位可以自行尝试。
.NetCore3.1:2.0.0之前的版本全部基于.netcore3.1开发;后续所有变更在netcore3.1分支进行。
.Net8.0:从2.0.0开始之后的版本,全部基于.net8开发;后续所有变更在master分支进行。
Install-Package CodeM.Common.DbHelper -Version 2.0.0
dotnet add package CodeM.Common.DbHelper --version 2.0.0
<PackageReference Include="CodeM.Common.DbHelper" Version="2.0.0" />
paket add CodeM.Common.DbHelper --version 2.0.0
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("sqlite", "System.Data.SQLite.SQLiteFactory, System.Data.SQLite");
DbUtils.AddDataSource("sqlite_test", "sqlite", "DataSource=test.db;Version=3;");
DbUtils.ExecuteNonQuery("sqlite_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("sqlite_test", sql);
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("mysql", "MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data");
DbUtils.AddDataSource("mysql_test", "mysql", "Server=localhost;Database=test; User=root;Password=root;");
DbUtils.ExecuteNonQuery("mysql_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("mysql_test", sql);
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("sqlserver", "Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient");
DbUtils.AddDataSource("sqlserver_test", "sqlserver", "Data Source=localhost;Database=test;User Id=sa;Password=sa123;Encrypt=no;");
DbUtils.ExecuteNonQuery("sqlserver_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("sqlserver_test", sql);
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("oracle", "Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess");
string connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)));User Id = system; Password = orcl123";
DbUtils.AddDataSource("oracle_test", "oracle", connString);
DbUtils.ExecuteNonQuery("oracle_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("oracle_test", sql);
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("postgres", "Npgsql.NpgsqlFactory, Npgsql");
DbUtils.AddDataSource("postgres_test", "postgres", "Host=localhost;Database=test;User Id=postgres;Password=postgres;");
DbUtils.ExecuteNonQuery("postgres_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("postgres_test", sql);
// 同一类型数据库只需注册一次
DbUtils.RegisterDbProvider("dm", "Dm.DmClientFactory, DmProvider");
DbUtils.AddDataSource("dm_test", "dm", "server=localhost;port=5236;schema=test;user=TEST;password=TEST123456");
DbUtils.ExecuteNonQuery("dm_test", "Insert Into User (id, name) Values(1, 'wangxm')");
string sql = "Select * From test Where id=1";
DbDataReader dr = DbUtils.ExecuteDataReader("dm_test", sql);
public static void RegisterDbProvider(string providerName, string providerFactoryClassName)
providerName: 提供者名字,用户自定义,唯一性。
providerFactoryClassName: 数据库提供者工厂类全名称,如: MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data
无
public static bool UnregisterDbProvider(string providerName)
providerName: 提供者名字
返回执行结果,成功返回True,失败返回False。
public static bool AddDataSource(string name, string providerName, string connectionString)
name: 数据源名字,用户自定义,唯一性。
providerName: 提供者名字。
connectionString: 数据库连接字符串,因提供者不同而不同;如MySql: Server=localhost;Database=test; User=root;Password=root;
返回执行结果,成功返回True,失败返回False。
public static bool RemoveDataSource(string name)
name: 数据源名字。
返回执行结果,成功返回True,失败返回False。
public static bool HasDataSource(string name)
naem: 数据源名字。
指定数据源存在返回True,否则返回False。
public static DbConnection GetConnection(string datasourceName)
datasourceName: 数据源名字。
数据库连接对象的实例。
public static DbCommand CreateCommand(string datasourceName)
datasourceName: 数据源名称。
数据库命令执行对象的实例。
public static DbCommand CreateCommand(string datasourceName, int timeout)
datasourceName: 数据源名称。 timeout: 命令执行的超时时间。
数据库命令执行对象的实例。
public static DbCommand CreateCommand(DbConnection connection)
connection: 数据库连接对象实例。
数据库命令执行对象的实例。
public static DbCommand CreateCommand(DbConnection connection, int timeout)
connection: 数据库连接对象实例。
timeout: 命令执行的超时时间。
数据库命令执行对象的实例。
public static DbParameter CreateParam(string datasourceName, string name, object value)
datasourceName: 数据源名称。
name: 参数名称。
value: 参数值。
数据库命令参数对象的实例。
public static DbParameter CreateParam(string datasourceName, string name, object value, DbType type, ParameterDirection dir)
datasourceName: 数据源名称。
name: 参数名称。
value: 参数值。
dir: 参数方向,输入参数还是输出参数。
数据库命令参数对象的实例。
public static DbTransaction GetTransaction(string datasourceName)
datasourceName: 数据源名称。
数据库事务对象的实例。
public static DbTransaction GetTransaction(string datasourceName, IsolationLevel level)
datasourceName: 数据源名称。
level: 事务隔离级别。
数据库事务对象的实例。
public static void CommitTransaction(DbTransaction transaction)
transaction: 数据库事务对象。
无
public static void RollbackTransaction(DbTransaction transaction)
transaction: 数据库事务对象。
无
public static int ExecuteNonQuery(string datasourceName, string commandText)
datasourceName: 数据源名称。
commandText: 数据库命令。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(string datasourceName, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandText: 数据库命令
commandParams: 数据库命令参数
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(string datasourceName, CommandType commandType, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbConnection connection, string commandText)
connection: 数据库连接对象。
commandText: 数据库命令。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbConnection connection, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbConnection connection, CommandType commandType, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbTransaction transaction, string commandText)
transaction: 数据库事务对象。
commandText: 数据库命令。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbTransaction transaction, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
执行数据库命令影响的记录条数。
public static int ExecuteNonQuery(DbTransaction transaction, CommandType commandType, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
执行数据库命令影响的记录条数。
public static object ExecuteScalar(string datasourceName, string commandText)
datasourceName: 数据源名称。
commandText: 数据库命令。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(string datasourceName, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(string datasourceName, CommandType commandType, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbConnection connection, string commandText)
connection: 数据库连接对象。
commandText: 数据库命令。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbConnection connection, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbConnection connection, CommandType commandType, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbTransaction transaction, string commandText)
transaction: 数据库事务对象。
commandText: 数据库命令。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbTransaction transaction, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static object ExecuteScalar(DbTransaction transaction, CommandType commandType, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
返回查询结果第一行第一列的值。
public static DbDataReader ExecuteDataReader(string datasourceName, string commandText)
datasourceName: 数据源名称。
commandText: 数据库命令。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(string datasourceName, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(string datasourceName, CommandType commandType, string commandText, params DbParameter[] commandParams)
datasourceName: 数据源名称。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbConnection connection, string commandText)
connection: 数据库连接对象。
commandText: 数据库命令。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbConnection connection, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbConnection connection, CommandType commandType, string commandText, params DbParameter[] commandParams)
connection: 数据库连接对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbTransaction transaction, string commandText)
transaction: 数据库事务对象。
commandText: 数据库命令。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbTransaction transaction, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象
public static DbDataReader ExecuteDataReader(DbTransaction transaction, CommandType commandType, string commandText, params DbParameter[] commandParams)
transaction: 数据库事务对象。
commandType: 执行命令的类型。
commandText: 数据库命令。
commandParams: 数据库命令参数。
数据读取器,DbDataReader对象