Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }