Marking.Template/App_Code/MysqlDBHelper.cs

92 lines
2.9 KiB
C#

using Dapper;
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.SqlClient;
/// <summary>
/// 数据库操作类 需要nuget 安装 Dapper 和 MySql.Data
/// </summary>
public class MysqlDBHelper
{
// todo 生产环境切换数据库地址
//#if DEBUG
private const string _basicConnectionStr =
"Server=192.168.2.9;Port=3306;Database=marking_basic;Uid=root;Pwd=qwe123!@#;MinimumPoolSize=1;MaximumPoolSize=100;CharSet=utf8mb4;AllowLoadLocalInfile=true;AllowUserVariables=True;";
//#else
// private const string _basicConnectionStr =
// "Server=mk-rds.23544.com;Port=33306;Database=marking_basic;Uid=marking;Pwd=poiuytPOIUYT098765)(*&^%;MinimumPoolSize=1;MaximumPoolSize=100;CharSet=utf8mb4;AllowLoadLocalInfile=true;AllowUserVariables=True;";
//#endif
private string _tenantConnectionStr;
public MysqlDBHelper(long tenantCode)
{
if (tenantCode <= 0)
{
throw new System.ArgumentNullException("tenantCode");
}
_tenantConnectionStr = GetTenantConnectionString(tenantCode);
}
private string GetTenantConnectionString(long tenantCode)
{
using (IDbConnection connection = new MySqlConnection(_basicConnectionStr))
{
var tenant = connection.QueryFirst<dynamic>("select * from tenant where tenant_code=" + tenantCode);
return "Server=" + tenant.ip_addr + ";Port=" + tenant.port + ";Database=" + tenant.database + ";Uid=" + tenant.dbuser + ";Pwd=" + tenant.password + ";MinimumPoolSize=1;MaximumPoolSize=100;CharSet=utf8mb4;AllowLoadLocalInfile=true;AllowUserVariables=True;";
}
}
public DataTable ExecuteQuery(string sql)
{
DataTable dt = new DataTable();
using (IDbConnection connection = new MySqlConnection(_tenantConnectionStr))
{
using (var reader = connection.ExecuteReader(sql))
{
dt.Load(reader);
}
}
return dt;
}
public object ExecuteScalar(string sql)
{
using (IDbConnection connection = new MySqlConnection(_tenantConnectionStr))
{
return connection.ExecuteScalar(sql);
}
}
public int ExecuteNoQuery(string sql)
{
using (IDbConnection connection = new MySqlConnection(_tenantConnectionStr))
{
return connection.Execute(sql);
}
}
public int ExecuteNoQuery(string sql, params MySqlParameter[] sp)
{
using (MySqlConnection connection = new MySqlConnection(_tenantConnectionStr))
{
connection.Open();
using (MySqlCommand cmd = new MySqlCommand(sql, connection))
{
cmd.CommandType = CommandType.Text;
if (sp != null && sp.Length > 0)
{
cmd.Parameters.AddRange(sp);
}
return cmd.ExecuteNonQuery();
}
}
}
}