安睿特接口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
7.5 KiB

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XS_DAL
{
public class DBHelper
{
/// <summary>
/// 连接字符串
/// </summary>
string dbConnectionString;
/// <summary>
/// 数据库提供程序的固定名称
/// </summary>
string dbProviderName;
/// <summary>
/// 数据库类型
/// </summary>
string dbType;
/// <summary>
/// 构造方法
/// </summary>
/// <param name="connstr">连接字符串</param>
/// <param name="provider">数据库提供程序固定名称</param>
public DBHelper(string dbConnectionString, string dbProviderName)
{
this.dbConnectionString = dbConnectionString;
this.dbProviderName = dbProviderName;
}
/// <summary>
/// 创建数据库连接
/// </summary>
/// <returns></returns>
private DbConnection CreateConnection()
{
DbProviderFactory dbFactory = DbProviderFactories.GetFactory(dbProviderName);
DbConnection dbConnection = dbFactory.CreateConnection();
dbConnection.ConnectionString = dbConnectionString;
return dbConnection;
}
/// <summary>
/// 创建数据库适配器
/// </summary>
/// <returns></returns>
private DbDataAdapter CreateDataAdapter()
{
DbProviderFactory dbFactory = DbProviderFactories.GetFactory(dbProviderName);
DbDataAdapter dbDataAdapter = dbFactory.CreateDataAdapter();
return dbDataAdapter;
}
/// <summary>
/// 测试数据是否正常连接
/// </summary>
/// <returns></returns>
public bool IsDbConnected()
{
using (DbConnection dbConnection = CreateConnection())
{
dbConnection.Open();
return true;
}
}
/// <summary>
/// 使用事务执行SQL语句返回受影响的行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql)
{
using (DbConnection dbConnection = CreateConnection())
{
using (DbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = sql;
dbCommand.Connection.Open();
using (DbTransaction dbTransaction = dbCommand.Connection.BeginTransaction())
{
try
{
dbCommand.Transaction = dbTransaction;
int result = dbCommand.ExecuteNonQuery();
dbTransaction.Commit();
return result;
}
catch (Exception)
{
dbTransaction.Rollback();
throw;
}
}
}
}
}
/// <summary>
/// 使用事务执行多条SQL语句返回受影响的总行数
/// </summary>
/// <param name="sqls">SQL语句</param>
/// <returns></returns>
public int ExecuteNonQuery(List<string> sqls)
{
using (DbConnection dbConnection = CreateConnection())
{
using (DbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandType = CommandType.Text;
dbCommand.Connection.Open();
using (DbTransaction dbTransaction = dbCommand.Connection.BeginTransaction())
{
try
{
dbCommand.Transaction = dbTransaction;
int result = 0;
for (int i = 0; i < sqls.Count; i++)
{
dbCommand.CommandText = sqls[i];
result += dbCommand.ExecuteNonQuery();
}
dbCommand.Transaction.Commit();
return result;
}
catch (Exception)
{
dbCommand.Transaction.Rollback();
throw;
}
}
}
}
}
/// <summary>
/// 执行带参数存储过程返回受影响的行数
/// </summary>
/// <param name="spt">存储过程名</param>
/// <param name="dbParameters">参数列表</param>
/// <returns></returns>
public int ExecuteNonQuery(string spt, ref List<DbParameter> dbParameters)
{
using (DbConnection dbConnection = CreateConnection())
{
using (DbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandText = spt;
dbCommand.CommandType = CommandType.StoredProcedure;
foreach (var item in dbParameters)
{
if ((item.Direction == ParameterDirection.Input || item.Direction == ParameterDirection.InputOutput) && item.Value == null)
{
item.Value = DBNull.Value;
}
dbCommand.Parameters.Add(item);
}
dbCommand.Connection.Open();
int result = dbCommand.ExecuteNonQuery();
return result;
}
}
}
/// <summary>
/// 执行SQL语句返回第一行第列
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
public object ExecuteScalar(string sql)
{
using (DbConnection dbConnection = CreateConnection())
{
using (DbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = sql;
dbCommand.Connection.Open();
return dbCommand.ExecuteScalar();
}
}
}
/// <summary>
/// 执行SQL语句返回数据表
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
public DataTable GetDataTable(string sql)
{
using (DbConnection dbConnection = CreateConnection())
{
using (DbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = sql;
dbCommand.Connection.Open();
DbDataAdapter dbDataAdapter = CreateDataAdapter();
dbDataAdapter.SelectCommand = dbCommand;
DataSet ds = new DataSet();
dbDataAdapter.Fill(ds);
return ds.Tables[0];
}
}
}
}
}