private static bool IsExistSQLProcedure(DbConnConfig dbConfig, string procName) { var conStr = dbConfig.ConnString; if (string.IsNullOrEmpty(conStr)) { throw new Exception("全局数据库连接未设定!"); } //从数据库中检索 是否存在此存储过程 var sql = string.Format("SELECT COUNT(0) FROM sysobjects a WHERE a.name='{0}' AND a.type='P'", procName); using (var conn = new SqlConnection(conStr)) { if (conn.State != System.Data.ConnectionState.Open) { conn.Open(); } using (var cmd = new SqlCommand(sql, conn)) { int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count > 0) { return(true); } else { return(false); } } } }
/// <summary> /// 获取 DbCommand /// </summary> /// <returns></returns> public static DbCommand GetDbDbCommand(DbConnConfig dbConnConfig) { DbCommand cmd = null; if (null == dbConnConfig) { throw new Exception("置数据库连接配置不能为空!"); } switch (dbConnConfig.DbType) { case SupportDbType.SQLSERVER: cmd = new SqlCommand(); break; case SupportDbType.MYSQL: cmd = new MySqlCommand(); break; case SupportDbType.POSTGRESQL: case SupportDbType.ORACLE: default: throw new NotImplementedException(); } return(cmd); }
/// <summary> /// 获取一个 DataAdapter /// </summary> /// <returns></returns> public static DbDataAdapter GetDbDataAdapter(DbCommand selectCommand, DbConnConfig dbConnConfig) { DbDataAdapter dataAdapter = null; if (null == dbConnConfig) { throw new Exception("置数据库连接配置不能为空!"); } switch (dbConnConfig.DbType) { case SupportDbType.SQLSERVER: dataAdapter = new SqlDataAdapter((SqlCommand)selectCommand); break; case SupportDbType.MYSQL: dataAdapter = new MySqlDataAdapter((MySqlCommand)selectCommand); break; case SupportDbType.POSTGRESQL: case SupportDbType.ORACLE: default: throw new NotImplementedException(); } return(dataAdapter); }
internal static void CheckAndCreatePagerSQLProcedure(DbConnConfig dbConfig) { var connStr = dbConfig.ConnString; //1检查数据库是否存在存储过程 //2创建 //分页调用入口 var isHasExist = CheckIsHasExistProcedure(connStr, Contanst.PageSql_Call_Name); if (isHasExist == true) { return; } CreateSQLProcedure(connStr, PageSql_Call_MySqlCommand); }
internal static void CheckAndCreatePagerSQLProcedure(DbConnConfig dbConfig) { lock (_locker) { //1检查数据库是否存在存储过程 //2创建 //分页核心 if (!IsExistSQLProcedure(dbConfig, PageSql_Core_Name)) { CreateSQLProcedure(dbConfig, PageSql_Core_SQLCommand); } //分页调用入口 if (!IsExistSQLProcedure(dbConfig, Contanst.PageSql_Call_Name)) { CreateSQLProcedure(dbConfig, PageSql_Call_SQLCommand); } } }
/// <summary> /// 初始化数据库连接配置,从 配置文件:ConnectionStringSection节点 /// </summary> /// <param name="isNeedConfigDb">是否需要配置数据库</param> /// <param name="isAsync">是否异步模式配置数据库</param> public static void Init(bool isNeedConfigDb = true, bool isAsync = true) { //设置数据库连接 var connStringSection = ConfigHelper.GetConnectionStringSection(); if (null == connStringSection) { throw new Exception("未发现数据库连接配置节点:ConnectionStringSection"); } //将数据库连接节点装载到静态集合 foreach (var itemConnString in connStringSection) { if (itemConnString.ConnectionString.Contains(@".\SQLEXPRESS")) { continue; } var config = new DbConnConfig { Name = itemConnString.Name, ConnString = itemConnString.ConnectionString, ProviderName = itemConnString.ProviderName, SqlOutPut = itemConnString.SqlOutPut }; GlobalDBConnection.AllDbConnConfigs.Add(config.Name, config); } if (isNeedConfigDb == true) { //初始化-数据库 //异步初始化 var tsk_init = Task.Factory.StartNew(() => { GlobalDBConnection.InitDataBase(GlobalDBConnection.AllDbConnConfigs); }); if (isAsync == false && null != tsk_init && tsk_init.IsCompleted == false) { tsk_init.Wait();//等待此任务完成 } } }
/// <summary> /// 根据连接字符串名称 获取连接字符串配置 /// </summary> /// <param name="connName"></param> /// <returns></returns> public static DbConnConfig GetDbConfig(string connName = Default_ConnName) { DbConnConfig dbConfig = null; if (string.IsNullOrEmpty(connName)) { //必须有连接配置,如果没有 那么抛出异常 dbConfig = GlobalDBConnection.AllDbConnConfigs.FirstOrDefault().Value; } else { //检测是否有name if (!GlobalDBConnection.AllDbConnConfigs.ContainsKey(connName)) { throw new Exception("指定的数据库连接名称不存在配置中!Name:" + connName); } dbConfig = GlobalDBConnection.AllDbConnConfigs[connName]; } return(dbConfig); }
private static void CreateSQLProcedure(DbConnConfig dbConfig, string sqlCommand) { var conStr = dbConfig.ConnString; if (string.IsNullOrEmpty(conStr)) { throw new Exception("全局数据库连接未设定!"); } using (var conn = new SqlConnection(conStr)) { if (conn.State != System.Data.ConnectionState.Open) { conn.Open(); } using (var cmd = new SqlCommand(sqlCommand, conn)) { cmd.ExecuteNonQuery(); } } }
/// <summary> /// 数据上下文构造函数 /// </summary> /// <param name="dbConfig"></param> public MySqlDbContext(DbConnConfig dbConfig) : this() { this.DbConfig = dbConfig; }
/// <summary> /// 数据上下文 构造函数 /// </summary> /// <param name="dbConfig"></param> public SqlDbContext(DbConnConfig dbConfig) { this.DbConfig = dbConfig; }