Exemple #1
0
 /// <summary>
 /// 根据数据库类型获取所对应的数据库操作实例
 /// </summary>
 /// <param name="providerType"></param>
 /// <returns></returns>
 internal static DbProviderFactory GetDbProviderFactory(EDbProviderType providerType)
 {
     if (!ProviderFactoryDict.ContainsKey(providerType))
     {
         ProviderFactoryDict.Add(providerType, DbProviderFactories.GetFactory(ProviderNameDict[providerType]));
     }
     return(ProviderFactoryDict[providerType]);
 }
Exemple #2
0
 /// <summary>
 /// 提供连接和使用SQL操作不同类型的数据库(数据源)的方法
 /// </summary>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="providerType">数据库类型</param>
 /// <param name="commandTimeOut">执行一条命令的超时时间(以秒为单位)</param>
 protected DbHelper(string connectionString, EDbProviderType providerType, int commandTimeOut = 30)
 {
     ConnectionString = connectionString;
     CommandTimeOut   = commandTimeOut;
     _providerFactory = ProviderFactory.GetDbProviderFactory(providerType);
     if (_providerFactory == null)
     {
         throw new ArgumentException($"无法加载数据源类型为“{providerType.ToString()}”的数据库操作对象(ProviderFactory)");
     }
 }
        /// <summary>
        /// 从数据库中获取字典表,注意字典表只有两个字段即“编码”、“名称”
        /// </summary>
        /// <param name="connectString"></param>
        /// <param name="tableName"></param>
        /// <param name="eDbProviderType"></param>
        /// <param name="codeField">编码字段名</param>
        /// <param name="nameField">名称字段名</param>
        /// <returns></returns>
        protected static DictionaryTable GetDictionaryTableFromDb(string connectString, string tableName,
                                                                  EDbProviderType eDbProviderType, string codeField = "编码", string nameField = "名称")
        {
            var sql       = $"select {codeField},{nameField} from " + tableName;
            var dbHelper  = DbHelper.GetDbHelper(connectString, eDbProviderType);
            var dataTable = dbHelper.GetDataTable(sql);

            var dictTable = new DictionaryTable(tableName);

            foreach (DataRow row in dataTable.Rows)
            {
                dictTable.CodeNameDict.Add(row[0].ToString(), row[1].ToString());
            }

            dbHelper.Close();
            return(dictTable);
        }
 /// <summary>
 /// 构建操作数据库(数据源)的帮助类
 /// </summary>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="providerType">数据库类型</param>
 /// <param name="commandTimeOut">执行一条命令的超时时间(以秒为单位)</param>
 public static DbHelper GetDbHelper(string connectionString, EDbProviderType providerType, int commandTimeOut = 30)
 => new DbHelper(connectionString, providerType, commandTimeOut);
Exemple #5
0
 /// <summary>
 /// 根据数据库类型获取所对应的数据提供程序名
 /// </summary>
 /// <param name="providerType">数据库类型</param>
 /// <returns></returns>
 internal static string GetProviderName(EDbProviderType providerType)
 {
     return(ProviderNameDict[providerType]);
 }
        /// <summary>
        /// 从数据库中获取字典表
        /// </summary>
        /// <param name="connectString"></param>
        /// <param name="tableName">字典表名称</param>
        /// <param name="eDbProviderTyp"></param>
        /// <returns></returns>
        public static DictionaryTable GetDictionaryTable(string connectString, string tableName, EDbProviderType eDbProviderTyp)
        {
            var dictTables = new Dictionary <string, DictionaryTable>();

            if (dictTables.ContainsKey(tableName))
            {
                return(dictTables[tableName]);
            }

            var tableFields = GetDictionaryTableFromDb(connectString, tableName, eDbProviderTyp);

            dictTables.Add(tableName, tableFields);
            return(tableFields);
        }