static ConfigManger() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey); if (_dbBaseProvider == null) { //todo is expired format /* * string providerType = ConfigUtils.GetSetting("PayDB_ProviderType"); * string connectionFormat = ConfigUtils.GetSetting("PayDB_ConnectionString"); * string dataSource = string.Empty; * string userInfo = string.Empty; * try * { * dataSource = ConfigUtils.GetSetting("PayDB_Server"); * userInfo = ConfigUtils.GetSetting("PayDB_Acount"); * if (!string.IsNullOrEmpty(userInfo)) * { * userInfo = CryptoHelper.DES_Decrypt(userInfo, GameEnvironment.Setting.ProductDesEnKey); * } * } * catch (Exception) { } * string connectionString = ""; * if (!string.IsNullOrEmpty(dataSource) && !string.IsNullOrEmpty(userInfo)) * { * connectionString = string.Format(connectionFormat, dataSource, userInfo); * } * _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey, providerType, connectionString); */ } }
private bool SendToDb <T>(T data, EntityPropertyGetFunc <T> getFunc, EnttiyPostColumnFunc <T> postColumnFunc, bool synchronous) where T : ISqlEntity { if (Equals(data, null)) { return(false); } SchemaTable schemaTable = EntitySchemaSet.Get(data.GetType()); DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(_connectKey ?? schemaTable.ConnectKey); if (dbProvider == null) { return(false); } CommandStruct command = GenerateCommand(dbProvider, data, schemaTable, getFunc, postColumnFunc); if (command != null) { bool result = (synchronous ? dbProvider.ExecuteQuery(CommandType.Text, command.Sql, command.Parameters) : dbProvider.ExecuteNonQuery(data.GetMessageQueueId(), CommandType.Text, command.Sql, command.Parameters)) > 0; data.ResetState(); return(result); } return(false); }
//private MiddlewareSection section; public ServersDataProvider() { if (_provider == null) { _provider = DbConnectionProvider.CreateDbProvider(ConnectKey); var command = _provider.CreateCommandStruct("StaticServer", CommandMode.Inquiry, "ServerId,Name,Ip,Port"); command.Parser(); using (var dr = _provider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters)) { var serversDatas = new ShareCacheStruct <StaticServer>(); while (dr.Read()) { StaticServer oneServerModel = new StaticServer(); oneServerModel.ServerId = Convert.ToInt32(dr["ServerId"]); oneServerModel.Name = dr["Name"].ToString(); oneServerModel.Ip = dr["Ip"].ToString(); oneServerModel.Port = Convert.ToInt32(dr["Port"]); //ServerList.Add(oneServerModel); serversDatas.Add(oneServerModel); } } //this.AddATestCache(); } }
private static void OnCheckDynamicTable(string key, object value, CacheRemovedReason reason) { try { DateTime date = DateTime.Now; int logPriorBuildMonth = GetEntitySection().LogPriorBuildMonth; var tableTypes = _dynamicTables.ToList(); foreach (var schema in tableTypes) { DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(schema); if (dbprovider == null) { continue; } string tableName = ""; int count = logPriorBuildMonth > 1 ? logPriorBuildMonth : 2; for (int i = 0; i < count; i++) { tableName = schema.GetTableName(date, i); DbColumn[] columns; if (!dbprovider.CheckTable(tableName, out columns)) { CreateTableSchema(schema, dbprovider, tableName); } } } } catch (Exception ex) { TraceLog.WriteError("OnCheckLogTable error:{0}", ex); } }
/// <summary> /// 检测数据表结构变动 /// </summary> /// <param name="schema"></param> private static void CheckTableSchema(SchemaTable schema) { string tableName = schema.GetTableName(); try { DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(schema); if (dbprovider == null) { if (schema.StorageType.HasFlag(StorageType.ReadOnlyDB) || schema.StorageType.HasFlag(StorageType.ReadWriteDB) || schema.StorageType.HasFlag(StorageType.WriteOnlyDB)) { TraceLog.WriteError("Not found DB connection key \"{1}\" of the {0} entity.", schema.EntityName, schema.ConnectKey); } return; } DbColumn[] columns; if (dbprovider.CheckTable(tableName, out columns)) { ModifyTableSchema(schema, dbprovider, tableName, columns); } else { CreateTableSchema(schema, dbprovider, tableName); } } catch (Exception ex) { TraceLog.WriteError("CheckTableSchema {0} error:{1}", tableName, ex); } }
private static void CreateTableSchema(SchemaTable schema, DbBaseProvider dbprovider, string tableName) { var list = new List <DbColumn>(); foreach (var keypair in schema.Columns) { var field = keypair.Value; var column = new DbColumn(); column.Id = field.Id; column.Name = field.Name; column.Type = field.ColumnType; column.Length = field.ColumnLength; column.Scale = field.ColumnScale; column.Isnullable = field.Isnullable; column.IsKey = field.IsKey; column.IsUnique = field.IsUnique; column.DbType = field.DbType.ToString(); column.IsIdentity = field.IsIdentity; column.IdentityNo = field.IdentityNo; list.Add(column); } list.Sort((a, b) => a.Id.CompareTo(b.Id)); dbprovider.CreateTable(tableName, list.ToArray()); if (schema.Indexs != null && schema.Indexs.Length > 0) { dbprovider.CreateIndexs(tableName, schema.Indexs); } }
static ConfigManger() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey); if (_dbBaseProvider == null) { string providerType = ConfigUtils.GetSetting("PayDB_ProviderType"); string connectionFormat = ConfigUtils.GetSetting("PayDB_ConnectionString"); string dataSource = string.Empty; string userInfo = string.Empty; try { dataSource = ConfigUtils.GetSetting("PayDB_Server"); userInfo = ConfigUtils.GetSetting("PayDB_Acount"); if (!string.IsNullOrEmpty(userInfo)) { userInfo = CryptoHelper.DES_Decrypt(userInfo, GameEnvironment.Setting.ProductDesEnKey); } } catch (Exception) { } string connectionString = ""; if (!string.IsNullOrEmpty(dataSource) && !string.IsNullOrEmpty(userInfo)) { connectionString = string.Format(connectionFormat, dataSource, userInfo); } _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey, providerType, connectionString); } }
private IDataReader GetReader <T>() { string sql = string.Empty; try { if (Capacity < 0 || _filter == null || _schema == null) { TraceLog.WriteError("The {0} schema config is empty.", typeof(T).FullName); return(null); } string tableName = _schema.GetTableName(); if (string.IsNullOrEmpty(tableName)) { TraceLog.WriteError("The {0} schema table name is empty.", _schema.EntityType.FullName); return(null); } DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(_schema); if (dbprovider == null) { TraceLog.WriteError("The {0} ConnectKey:{1} is empty.", _schema.EntityType.FullName, _schema.ConnectKey); return(null); } var command = dbprovider.CreateCommandStruct(tableName, CommandMode.Inquiry); var columns = _schema.GetColumnNames(); command.Columns = string.Join(",", columns); command.OrderBy = (string.IsNullOrEmpty(_filter.OrderColumn) ? _schema.OrderColumn : _filter.OrderColumn) ?? ""; if (Capacity < int.MaxValue && Capacity > 0) { command.Top = Capacity; if (string.IsNullOrEmpty(command.OrderBy)) { string orderStr = ""; foreach (var key in _schema.Keys) { if (orderStr.Length > 0) { orderStr += ","; } orderStr += string.Format("{0}", dbprovider.FormatName(key)); } command.OrderBy = orderStr; } } command.Filter = dbprovider.CreateCommandFilter(); command.Filter.Condition = MergerCondition(_filter.Condition, _schema.Condition); ParseDataParameter(command.Filter); command.Parser(); sql = command.Sql; return(dbprovider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters)); } catch (Exception ex) { TraceLog.WriteError("DB execute reader sql:\"{0}\" error:{1}", sql, ex); } return(null); }
private static IDataParameter CreateParameter(DbBaseProvider dbProvider, string columnName, ColumnDbType dbType, object value) { IDataParameter parameter; switch (dbType) { case ColumnDbType.UniqueIdentifier: parameter = dbProvider.CreateParameterByGuid(columnName, (Guid)value); break; case ColumnDbType.LongText: parameter = dbProvider.CreateParameterByLongText(columnName, value); break; case ColumnDbType.Text: parameter = dbProvider.CreateParameterByText(columnName, value); break; case ColumnDbType.LongBlob: parameter = dbProvider.CreateParameterLongBlob(columnName, value); break; case ColumnDbType.Blob: parameter = dbProvider.CreateParameterByBlob(columnName, value); break; default: parameter = dbProvider.CreateParameter(columnName, value); break; } return(parameter); }
private bool SendToDb <T>(T data, EntityPropertyGetFunc <T> getFunc, EnttiyPostColumnFunc <T> postColumnFunc, bool synchronous) where T : ISqlEntity { if (Equals(data, null)) { return(false); } SchemaTable schemaTable = EntitySchemaSet.Get(data.GetType()); DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(_connectKey ?? schemaTable.ConnectKey); if (dbProvider == null) { return(false); } CommandStruct command = GenerateCommand(dbProvider, data, schemaTable, getFunc, postColumnFunc); if (command != null) { int result; if (synchronous) { //同时采集 ProfileManager.PostSqlOfMessageQueueTimes(command.TableName, 1); ProfileManager.ProcessSqlOfMessageQueueTimes(command.TableName); result = dbProvider.ExecuteQuery(CommandType.Text, command.Sql, command.Parameters); } else { //put into pool result = dbProvider.ExecuteNonQuery(data.GetMessageQueueId(), CommandType.Text, command.TableName, command.Sql, command.Parameters); } data.ResetState(); return(result > 0); } return(false); }
static ConnectManager() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey); if (_dbBaseProvider == null) { string providerType = ConfigUtils.GetSetting("Snscenter_ProviderType"); string connectionFormat = ConfigUtils.GetSetting("Snscenter_ConnectionString"); string dataSource = string.Empty; string userInfo = string.Empty; try { dataSource = ConfigUtils.GetSetting("Snscenter_Server"); userInfo = ConfigUtils.GetSetting("Snscenter_Acount"); if (!string.IsNullOrEmpty(userInfo)) { userInfo = CryptoHelper.DES_Decrypt(userInfo, GameEnvironment.Setting.ProductDesEnKey); } } catch (Exception) { } string connectionString = ""; if (!string.IsNullOrEmpty(dataSource) && !string.IsNullOrEmpty(userInfo)) { connectionString = string.Format(connectionFormat, dataSource, userInfo); } _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey, providerType, connectionString); } }
/// <summary> /// 检测数据表结构变动 /// </summary> /// <param name="schema"></param> private static void CheckTableSchema(SchemaTable schema) { string tableName = schema.Name; try { DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(schema); if (dbprovider == null) { return; } DbColumn[] columns; if (dbprovider.CheckTable(tableName, out columns)) { ModifyTableSchema(schema, dbprovider, tableName, columns); } else { CreateTableSchema(schema, dbprovider, tableName); } } catch (Exception ex) { TraceLog.WriteError("CheckTableSchema {0} error:{1}", tableName, ex); } }
//private MiddlewareSection section; public ServersDataProvider() { if (_provider == null) { _provider = DbConnectionProvider.CreateDbProvider(ConnectKey); var command = _provider.CreateCommandStruct("StaticServer", CommandMode.Inquiry,"ServerId,Name,Ip,Port"); command.Parser(); using (var dr = _provider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters)) { var serversDatas = new ShareCacheStruct<StaticServer>(); while (dr.Read()) { StaticServer oneServerModel = new StaticServer(); oneServerModel.ServerId = Convert.ToInt32(dr["ServerId"]) ; oneServerModel.Name = dr["Name"].ToString(); oneServerModel.Ip = dr["Ip"].ToString(); oneServerModel.Port = Convert.ToInt32(dr["Port"]); //ServerList.Add(oneServerModel); serversDatas.Add(oneServerModel); } } //this.AddATestCache(); } }
public DBProvider(string connKey) { if (!m_DBs.ContainsKey(connKey)) { m_DBs[connKey] = DbConnectionProvider.CreateDbProvider(connKey); } m_DB = m_DBs[connKey]; }
/// <summary> /// 检测数据表结构变动 /// </summary> /// <param name="schema"></param> private static IList <Tuple <DbBaseProvider, SchemaTable> > CheckTableSchema(SchemaTable schema) { string tableName = schema.GetTableName(DateTime.Now); try { if (DbConnectionProvider.Count == 0) { //not seting connection. return(null); } var dbProviderPools = new List <DbBaseProvider>(); var watchList = new List <Tuple <DbBaseProvider, SchemaTable> >(); DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(schema); if (dbprovider == null) { if (schema.StorageType.HasFlag(StorageType.ReadOnlyDB) || schema.StorageType.HasFlag(StorageType.ReadWriteDB) || schema.StorageType.HasFlag(StorageType.WriteOnlyDB)) { TraceLog.WriteError("Not found DB connection key \"{1}\" of the {0} entity.", schema.EntityName, schema.ConnectKey); } return(null); } dbProviderPools.Add(dbprovider); //增加从库节点配置 if (schema.SlaveConnectKeys != null && schema.SlaveConnectKeys.Length > 0) { foreach (var connectKey in schema.SlaveConnectKeys) { DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(connectKey); if (provider != null) { dbProviderPools.Add(provider); } } } foreach (var provider in dbProviderPools) { watchList.Add(Tuple.Create(provider, schema)); DbColumn[] columns; if (provider.CheckTable(tableName, out columns)) { ModifyTableSchema(schema, provider, tableName, columns); } else { CreateTableSchema(schema, provider, tableName); } } return(watchList); } catch (Exception ex) { TraceLog.WriteError("CheckTableSchema {0} error:{1}", tableName, ex); return(null); } }
public static void Init() { string connectionString = string.Format("Data Source={0};Database={1};Uid={2};Pwd={3};Pooling=true;", AppSetting.Current.Contract.Server, AppSetting.Current.Contract.Database, AppSetting.Current.Contract.UserId, AppSetting.Current.Contract.Password); dbProvider = DbConnectionProvider.CreateDbProvider("ContractData", "", connectionString); saveTempPath = Path.Combine(MathUtils.RuntimePath, AppSetting.Current.Contract.CaseOutPath); }
private IDataParameter[] ConvertParam(DbBaseProvider dbProvider, SqlParam[] paramList) { IDataParameter[] list = new IDataParameter[paramList.Length]; for (int i = 0; i < paramList.Length; i++) { SqlParam param = paramList[i]; list[i] = dbProvider.CreateParameter(param.ParamName, param.DbTypeValue, param.Size, param.Value.Value); } return(list); }
private void OnSyncSql(object state) { try { if (Monitor.TryEnter(syncSqlObject, 1000)) { try { TraceLog.ReleaseWrite("Sql waiting to be written to the Redis"); while (true) { var list = CacheChangeManager.Current.PopSql(100); if (list.Count == 0) { break; } foreach (var key in list) { string redisKey = key; try { dynamic entity = CacheFactory.GetEntityFromRedis(redisKey, true); SchemaTable schemaTable = entity.GetSchema(); if (entity != null && schemaTable != null) { DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(schemaTable); if (dbProvider != null) { DataSyncManager.GetDataSender().Send(entity, false); } } } catch (Exception e) { TraceLog.WriteError("Sync to db {0} error:{1}", redisKey, e); } } } } finally { Monitor.Exit(syncSqlObject); } } } catch (Exception ex) { TraceLog.WriteError("Sql sync error:{0}", ex); } }
/// <summary> /// 从数据库恢复 /// </summary> /// <param name="chart">条件</param> /// <param name="value">值</param> public static void RecoverFromDb(string chart, int value = -2) { var cacheSet = new GameDataCacheSet <tb_User>(); if (cacheSet.Count == 0) { SchemaTable schema = EntitySchemaSet.Get <tb_User>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("isRobot", chart); filter.Parameters.Add("isRobot", value); cacheSet.TryRecoverFromDb(filter);//从数据库中恢复数据 } }
private static void ModifyTableSchema(SchemaTable schema, DbBaseProvider dbprovider, string tableName, DbColumn[] columns) { var list = new List <DbColumn>(); foreach (var keypair in schema.Columns) { string name = keypair.Value.Name; var column = Array.Find(columns, p => string.Equals(p.Name, name, StringComparison.CurrentCultureIgnoreCase)); if (column == null) { column = new DbColumn(); column.Id = keypair.Value.Id; column.Name = name; column.Type = keypair.Value.ColumnType; column.Length = keypair.Value.ColumnLength; column.Scale = keypair.Value.ColumnScale; column.Isnullable = keypair.Value.Isnullable; column.IsKey = keypair.Value.IsKey; column.DbType = keypair.Value.DbType.ToString(); column.IsIdentity = keypair.Value.IsIdentity; list.Add(column); } else { if ((column.Type == typeof(decimal) && keypair.Value.ColumnScale > 0 && column.Scale != keypair.Value.ColumnScale) || (!keypair.Value.IsJson && keypair.Value.ColumnType != typeof(byte[]) && column.Type != keypair.Value.ColumnType && keypair.Value.ColumnType.IsEnum && column.Type != typeof(int)) ) { column.Type = keypair.Value.ColumnType; column.Length = keypair.Value.ColumnLength; column.Scale = keypair.Value.ColumnScale; column.Isnullable = keypair.Value.Isnullable; column.IsKey = keypair.Value.IsKey; column.DbType = keypair.Value.DbType.ToString(); column.IsModify = true; list.Add(column); } } } if (list.Count > 0) { list.Sort((a, b) => a.Id.CompareTo(b.Id)); dbprovider.CreateColumn(tableName, list.ToArray()); } }
/// <summary> /// Generate sql statement /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <returns></returns> internal SqlStatement GenerateSqlQueue <T>(T data) where T : AbstractEntity { SchemaTable schemaTable = data.GetSchema(); DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(schemaTable.ConnectKey); if (dbProvider != null) { CommandStruct command = GenerateCommand(dbProvider, data, schemaTable, false, null); if (command != null) { int identityId = data.GetIdentityId(); return(dbProvider.GenerateSql(identityId, command)); } } return(null); }
/// <summary> /// 初始化机哭人队列,MySQLDAL.Model.tb_User 数据 /// </summary> public static void InitiRobotList() { _robotUserList = new List <tb_User>(); var cacheSet = new GameDataCacheSet <tb_User>(); cacheSet.ReLoad(); if (cacheSet.Count == 0) { SchemaTable schema = EntitySchemaSet.Get <tb_User>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("isRobot", "="); filter.Parameters.Add("isRobot", 1); cacheSet.TryRecoverFromDb(filter);//从数据库中恢复数据 } var robotIdList = tb_UserEx.GetUserIdListByRobot(1); List <tb_User> _userList = new List <tb_User>(); // List<tb_User> _userList = cacheSet.FindAll(); if (robotIdList.Any()) { robotIdList.ForEach(t => { tb_User user; cacheSet.TryFindKey(t.ToString(), out user); if (user != null) { _userList.Add(user); } }); } //// List<tb_User> _userList = cacheSet.FindAll(); if (_userList == null || _userList.Count == 0) { ErrorRecord.Record(" tb_user 中没有机器人,201610231608"); return; } //SetWebChartName(); // var setName = SetWebChartName(_userList); // var temp = SetRobotWebChartImg(_userList); // ModifyFileName(); // cacheSet.AddOrUpdate(setName); //cacheSet.Update(); _robotUserList.AddRange(_userList); }
/// <summary> /// Generate sql statement /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <param name="getFunc"></param> /// <param name="postColumnFunc"></param> /// <returns></returns> internal SqlStatement GenerateSqlQueue <T>(T data, EntityPropertyGetFunc <T> getFunc = null, EnttiyPostColumnFunc <T> postColumnFunc = null) where T : ISqlEntity { SchemaTable schemaTable = EntitySchemaSet.Get(data.GetType()); DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(schemaTable.ConnectKey); if (dbProvider != null) { //process all columns. CommandStruct command = GenerateCommand(dbProvider, data, schemaTable, getFunc, postColumnFunc); if (command != null) { var identityId = data.GetMessageQueueId(); return(dbProvider.GenerateSql(identityId, command)); } } return(null); }
public static tb_User GetFromCachebyUserID(int UserID) { var cacheSet = new PersonalCacheStruct <tb_User>(); tb_User _tempuser = cacheSet.Find(UserID.ToString(), t => t.UserID == UserID); if (cacheSet.Count == 0 || _tempuser == null) { SchemaTable schema = EntitySchemaSet.Get <tb_User>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("UserId"); filter.Parameters.Add("UserId", UserID); cacheSet.TryRecoverFromDb(filter);//从数据库中恢复数据 } _tempuser = cacheSet.Find(UserID.ToString(), t => t.UserID == UserID); return(_tempuser); }
public static void Init() { var dbType = AppSetting.Current.Contract.DBType; string connectionString = string.Format("Data Source={0};Database={1};Uid={2};Pwd={3};", dbType == DBType.SQL && AppSetting.Current.Contract.Port > 0 ? AppSetting.Current.Contract.Server + "," + AppSetting.Current.Contract.Port : AppSetting.Current.Contract.Server, AppSetting.Current.Contract.Database, AppSetting.Current.Contract.UserId, AppSetting.Current.Contract.Password); if (dbType == DBType.MySql && AppSetting.Current.Contract.Port > 0) { connectionString += string.Format("Port={0};", AppSetting.Current.Contract.Port); } string privodeType = AppSetting.Current.Contract.DBType == DBType.MySql ? "MySqlDataProvider" : ""; dbProvider = DbConnectionProvider.CreateDbProvider("ContractData", privodeType, connectionString); saveTempPath = Path.Combine(MathUtils.RuntimePath, AppSetting.Current.Contract.CaseOutPath); }
public static tb_Notice GetLastNotice() { var notice = new tb_Notice(); var cacheSettable = new ShareCacheStruct <tb_Notice>(); cacheSettable.ReLoad(); notice = cacheSettable.Find(w => w.isStart == 1); if (notice == null) { SchemaTable schema = EntitySchemaSet.Get <tb_Notice>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("isStart"); filter.Parameters.Add("isStart", 1); cacheSettable.TryRecoverFromDb(filter);//从数据库中恢复数据 notice = cacheSettable.Find(w => w.isStart == 1); } return(notice); }
private void UpdateToDb <T>(T data, bool isChange, string connectKey, EntityBeforeProcess handle) where T : AbstractEntity { if (data == null) { return; } SchemaTable schemaTable = data.GetSchema(); DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(connectKey ?? schemaTable.ConnectKey); if (dbProvider == null) { return; } CommandStruct command = GenerateCommand(dbProvider, data, schemaTable, isChange, handle); if (command != null) { dbProvider.ExecuteNonQuery(data.GetIdentityId(), CommandType.Text, command.Sql, command.Parameters); data.OnUnNew(); } }
private static void CreateTableSchema(SchemaTable schema, DbBaseProvider dbprovider, string tableName) { var list = new List <DbColumn>(); foreach (var keypair in schema.Columns) { var column = new DbColumn(); column.Id = keypair.Value.Id; column.Name = keypair.Value.Name; column.Type = keypair.Value.ColumnType; column.Length = keypair.Value.ColumnLength; column.Scale = keypair.Value.ColumnScale; column.Isnullable = keypair.Value.Isnullable; column.IsKey = keypair.Value.IsKey; column.DbType = keypair.Value.DbType.ToString(); column.IsIdentity = keypair.Value.IsIdentity; list.Add(column); } list.Sort((a, b) => a.Id.CompareTo(b.Id)); dbprovider.CreateTable(tableName, list.ToArray()); }
/// <summary> /// 获取所有 /// </summary> /// <returns></returns> private static DataTable GetUserPrizeList(DbBaseProvider dbProvider, CommandFilter condition, int statIndex, int endIndex) { var command = dbProvider.CreateCommandStruct("UserTakePrize", CommandMode.Inquiry); command.Columns = "ID,UserID,ObtainNum,EnergyNum,GameCoin,Gold,ExpNum,VipLv,GainBlessing,ItemPackage,CrystalPackage,SparePackage,EnchantPackage,MailContent,IsTasked,TaskDate,OpUserID,CreateDate,HonourNum,Items"; command.FromIndex = statIndex; command.ToIndex = endIndex; command.OrderBy = "ID DESC"; command.Filter = condition; command.Parser(); DataTable dt = new DataTable(); using (var reader = dbProvider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters)) { DataColumn col; DataRow row; for (int i = 0; i < reader.FieldCount; i++) { col = new DataColumn(); col.ColumnName = reader.GetName(i); dt.Columns.Add(col); } while (reader.Read()) { row = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { string colName = dt.Columns[i].ColumnName; row[colName] = reader[colName].ToString(); } dt.Rows.Add(row); } } return(dt); }
private static void OnCheckLogTable(string key, object value, CacheRemovedReason reason) { try { var tableTypes = _logTables.ToList(); foreach (var type in tableTypes) { SchemaTable schema; if (!SchemaSet.TryGetValue(type, out schema)) { continue; } DbBaseProvider dbprovider = DbConnectionProvider.CreateDbProvider(schema); if (dbprovider == null) { continue; } string tableName = ""; string format = ""; for (int i = 0; i < LogPriorBuildMonth; i++) { int month = i; format = LogTableNameFormat.Replace("$date", DateTime.Now.AddMonths(month).ToString("yyyyMM")); tableName = string.Format(format, schema.SpecialName); DbColumn[] columns; if (!dbprovider.CheckTable(tableName, out columns)) { CreateTableSchema(schema, dbprovider, tableName); } } } } catch (Exception ex) { TraceLog.WriteError("OnCheckLogTable error:{0}", ex); } }
static DbDataLoader() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider("Contract"); _dbBaseProvider.CheckConnect(); }
private static void ModifyTableSchema(SchemaTable schema, DbBaseProvider dbprovider, string tableName, DbColumn[] columns) { var list = new List <DbColumn>(); foreach (var keypair in schema.Columns) { var field = keypair.Value; string name = field.Name; var dbColumn = Array.Find(columns, p => MathUtils.IsEquals(p.Name, name, true)); if (dbColumn == null) { dbColumn = new DbColumn(); dbColumn.Id = field.Id; dbColumn.Name = name; dbColumn.Type = field.ColumnType; dbColumn.Length = field.ColumnLength; dbColumn.Scale = field.ColumnScale; dbColumn.Isnullable = field.Isnullable; dbColumn.IsKey = field.IsKey; dbColumn.IsUnique = field.IsUnique; dbColumn.DbType = field.DbType.ToString(); dbColumn.IsIdentity = field.IsIdentity; dbColumn.IdentityNo = field.IdentityNo; list.Add(dbColumn); } else { var fieldType = field.ColumnType; //no modify type: text,blob,byte[], enum,list,dict if ( //对象序列化类型 (field.IsSerialized && ( (field.DbType == ColumnDbType.Varchar && (dbColumn.Type != typeof(string) || (field.ColumnLength > 0 && dbColumn.Length != field.ColumnLength))) || (field.DbType != ColumnDbType.Varchar && (dbColumn.Type != typeof(string) || dbColumn.DbType.StartsWith("varchar"))) ) ) || //特殊值类型 (dbColumn.Type == typeof(decimal) && field.ColumnScale > 0 && dbColumn.Scale != field.ColumnScale) || (fieldType.IsEnum && dbColumn.Type != typeof(int)) || (fieldType == typeof(ushort) && dbColumn.Type != typeof(short)) || (fieldType == typeof(uint) && dbColumn.Type != typeof(int)) || (fieldType == typeof(ulong) && dbColumn.Type != typeof(long)) || (fieldType == typeof(string) && field.ColumnLength > 0 && dbColumn.Length != field.ColumnLength) || //非对象类型 (!field.IsSerialized && !fieldType.IsEnum && !field.IsDictionary && !field.IsList && fieldType != typeof(byte[]) && fieldType != typeof(ushort) && fieldType != typeof(uint) && fieldType != typeof(ulong) && dbColumn.Type != fieldType ) || //check key ((field.IsKey && dbColumn.KeyNo == 0) || (!field.IsKey && dbColumn.KeyNo > 0)) ) { dbColumn.Type = fieldType; dbColumn.Length = field.ColumnLength; dbColumn.Scale = field.ColumnScale; dbColumn.Isnullable = field.Isnullable; dbColumn.IsKey = field.IsKey; dbColumn.DbType = field.DbType.ToString(); dbColumn.IsIdentity = field.IsIdentity; dbColumn.IdentityNo = field.IdentityNo; dbColumn.IsModify = true; list.Add(dbColumn); } } } if (list.Count > 0) { list.Sort((a, b) => a.Id.CompareTo(b.Id)); dbprovider.CreateColumn(tableName, list.ToArray()); } }
private static IDataParameter[] ToSqlParameter(DbBaseProvider dbProvider, SqlParam[] paramList) { IDataParameter[] list = new IDataParameter[paramList.Length]; for (int i = 0; i < paramList.Length; i++) { SqlParam param = paramList[i]; list[i] = dbProvider.CreateParameter(param.ParamName, param.DbTypeValue, param.Size, param.Value.Value); } return list; }
/// <summary> /// 获取所有 /// </summary> /// <returns></returns> private static DataTable GetUserPrizeList(DbBaseProvider dbProvider, CommandFilter condition, int statIndex, int endIndex) { var command = dbProvider.CreateCommandStruct("UserTakePrize", CommandMode.Inquiry); command.Columns = "ID,UserID,ObtainNum,EnergyNum,GameCoin,Gold,ExpNum,VipLv,GainBlessing,ItemPackage,CrystalPackage,SparePackage,EnchantPackage,MailContent,IsTasked,TaskDate,OpUserID,CreateDate,HonourNum,Items"; command.FromIndex = statIndex; command.ToIndex = endIndex; command.OrderBy = "ID DESC"; command.Filter = condition; command.Parser(); DataTable dt = new DataTable(); using (var reader = dbProvider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters)) { DataColumn col; DataRow row; for (int i = 0; i < reader.FieldCount; i++) { col = new DataColumn(); col.ColumnName = reader.GetName(i); dt.Columns.Add(col); } while (reader.Read()) { row = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { string colName = dt.Columns[i].ColumnName; row[colName] = reader[colName].ToString(); } dt.Rows.Add(row); } } return dt; }
static DbDataLoader() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider("Contract"); }
static ConnectManager() { _dbBaseProvider = DbConnectionProvider.CreateDbProvider(ConnectKey); }