using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Tiobon.Core.Common.DB.Dapper.Const;
using Tiobon.Core.Common.DB.Dapper.DBManager;
using Tiobon.Core.Common.DB.Dapper.Enums;
namespace Tiobon.Core.Common.DB.Dapper;
public class DbAccess
{
public static ISqlDapper Instance
{
get
{
return DBServerProvider.SqlDapper;
}
}
public static bool MySql
{
get
{
bool result = false;
if (DBType.Name == DbCurrentType.MySql.ToString())
{
result = true;
}
return result;
}
}
#region 获取SQL插入语句
///
/// 获取SQL插入语句
///
/// 表名
/// 列名
/// 列值
/// SQL插入语句
public StringBuilder GetInsertSql(string tableName, string columnName, string columnValue)
{
try
{
DbInsert di = null;
string sql = null;
StringBuilder sqls = new StringBuilder();
DbSelect ds = new DbSelect(tableName + " A", "A");
ds.IsInitDefaultValue = false;
ds.Where("A." + columnName, "=", columnValue);
DataTable dt = Instance.GetDataTable(ds.GetSql(), null);
for (int i = 0; i < dt.Rows.Count; i++)
{
di = new DbInsert(tableName, "GetInsertSql");
di.IsInitDefaultValue = false;
for (int j = 0; j < dt.Columns.Count; j++)
{
di.Values(dt.Columns[j].ColumnName, dt.Rows[i][dt.Columns[j].ColumnName].ToString());
}
sql = di.GetSql();
sqls.Append(sql + ";\n");
}
return sqls;
}
catch (Exception) { throw; }
}
#endregion
#region 数据库名称
///
/// 数据库名称
///
public static string DatabaseName
{
get
{
return Instance.Connection.Database;
}
}
#endregion
public static DataTable GetDataTable(string sql, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.GetDataTable(sql, param, commandType, beginTransaction);
public static async Task GetDataTableAsync(string cmd, object param = null, IDbTransaction transaction = null, CommandType? commandType = null, int? commandTimeout = null) => await Instance.GetDataTableAsync(cmd, param, transaction, commandType, commandTimeout);
public static List QueryList(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) where T : class => Instance.QueryList(cmd, param, commandType, beginTransaction);
public static async Task> QueryListAsync(string cmd, object param = null, bool beginTransaction = false, CommandType? commandType = null, int? commandTimeout = null) where T : class => await Instance.QueryListAsync(cmd, param, commandType, beginTransaction, commandTimeout);
public static T QueryFirst(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) where T : class => Instance.QueryFirst(cmd, param, commandType, beginTransaction);
public static async Task QueryFirstAsync(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false, int? commandTimeout = null) where T : class => await Instance.QueryFirstAsync(cmd, param, commandType, beginTransaction, commandTimeout);
public static object ExecuteScalar(string cmd, object param = null, CommandType? commandType = null, bool beginTransaction = false) => Instance.ExecuteScalar(cmd, param, commandType, beginTransaction);
public static async Task