public string GetTableName(BF_FORM.Entity entity, string yyyy, string yyyymm, string yyyymmdd, ref string strMessage) { #region 计算表名 short tableMode = entity.CREATE_TABLE_MODE; string tableName = entity.TABLE_NAME; switch (tableMode) { case (short)Enums.CreateTableMode.年份后缀: if (string.IsNullOrEmpty(yyyy)) { strMessage = "当前为表后缀为年份,请传入年份格式:yyyy"; return(""); } tableName += "_" + yyyy; break; case (short)Enums.CreateTableMode.年月后缀: if (string.IsNullOrEmpty(yyyymm)) { strMessage = "当前为表后缀为年月,请传入年份格式:yyyymm"; return(""); } tableName += "_" + yyyymm; break; case (short)Enums.CreateTableMode.年月日后缀: if (string.IsNullOrEmpty(yyyymmdd)) { strMessage = "当前为表后缀为年月日,请传入年份格式:yyyymmdd"; return(""); } tableName += "_" + yyyymmdd; break; case (short)Enums.CreateTableMode.用户ID后缀: tableName += "_" + SystemSession.UserID; break; } #endregion return(tableName); }
public string CreateTable(BF_FORM.Entity entity, List <BF_FORM.FieldInfo> FieldList) { #region 计算表名 short tableMode = entity.CREATE_TABLE_MODE; string tableName = entity.TABLE_NAME; #region 数据库对像 BDBHelper dbHelper = null; if (entity.DB_ID == 0) { dbHelper = new BDBHelper(); } else { BF_DATABASE.Entity db = BF_DATABASE.Instance.GetEntityByKey <BF_DATABASE.Entity>(entity.DB_ID); if (db == null) { BLog.Write(BLog.LogLevel.WARN, "查询数据库对像出现异常:数据库ID" + entity.DB_ID); return(""); } string dbType = BF_DATABASE.GetDbTypeName(db.DB_TYPE); dbHelper = new BDBHelper(dbType, db.IP, db.PORT, db.USER_NAME, db.PASSWORD, db.DB_NAME, db.DB_NAME); } #endregion //如查指定的表存在就返回 if (entity.CREATE_TABLE_MODE == (short)Enums.CreateTableMode.指定表 && dbHelper.TableIsExists(tableName)) { return(tableName); } switch (tableMode) { case (short)Enums.CreateTableMode.年份后缀: tableName += "_" + DateTime.Now.ToString("yyyy"); break; case (short)Enums.CreateTableMode.年月后缀: tableName += "_" + DateTime.Now.ToString("yyyyMM"); break; case (short)Enums.CreateTableMode.年月日后缀: tableName += "_" + DateTime.Now.ToString("yyyyMMdd"); break; case (short)Enums.CreateTableMode.用户ID后缀: tableName += "_" + SystemSession.UserID; break; } #endregion #region 建表 //自增长主键 string autoIncrementField = string.Empty; //唯一约束字段 string uniqueField = string.Empty; //唯一约束的值 // Dictionary<string, bool> dicUniqueValues = new Dictionary<string, bool>(); foreach (var field in FieldList) { if (field.IS_AUTO_INCREMENT == 1) { autoIncrementField = field.EN_NAME; } if (field.IS_UNIQUE == 1) { uniqueField = field.EN_NAME; } } //表不存在 if (entity.CREATE_TABLE_MODE != (short)Enums.CreateTableMode.指定表 && dbHelper.TableIsExists(tableName) == false) { //创建表 if (dbHelper.CreateTable(tableName, entity.TABLE_NAME) == false) { BLog.Write(BLog.LogLevel.WARN, "动态建表出现异常:" + tableName); return(""); } //设置自增长 if (dbHelper.SetAutoIncrement(tableName, autoIncrementField) == false) { BLog.Write(BLog.LogLevel.WARN, "设置表" + tableName + "的字段" + autoIncrementField + "为自增长失败"); return(""); } } #endregion return(tableName); }