Beispiel #1
0
        /// <summary>
        /// 字段值格式化
        /// </summary>
        /// <param name="fieldType">字段类型</param>
        /// <param name="dataType">数据库字段对应于.net平台运行时数据类型</param>
        /// <param name="value">要格式化的值</param>
        /// <returns>字段值格式化后的字符串</returns>
        protected virtual string PrimitiveFieldValueFormat(DBFieldType fieldType, Type dataType, object value)
        {
            string result;

            switch (fieldType)
            {
            case DBFieldType.DateTime:
                result = this.DateTimeFieldValueFormat(dataType, value);
                break;

            case DBFieldType.Number:
                result = value.ToString();
                break;

            case DBFieldType.String:
                result = $"'{value}'";
                break;

            case DBFieldType.Binary:
            case DBFieldType.Other:
            default:
                throw new NotSupportedException($"不支持的字段类型[{fieldType.ToString()}]");
            }

            return(result);
        }
 public DBFieldEntry SetDouble(double value)
 {
     if (DBFieldType.HasFlag(DBFieldType.@double))
     {
         Double = value;
     }
     return(this);
 }
 public DBFieldEntry SetDateTimeOffset(DateTimeOffset dateTimeOffset)
 {
     if (DBFieldType.HasFlag(DBFieldType.DateTime))
     {
         DateTimeOffset = dateTimeOffset;
     }
     return(this);
 }
 public DBFieldEntry SetInt(int value)
 {
     if (DBFieldType.HasFlag(DBFieldType.@int))
     {
         Int = value;
     }
     return(this);
 }
 public DBFieldEntry SetString(string value, int length = 200)
 {
     if (DBFieldType.HasFlag(DBFieldType.varchar) && value.Length <= length)
     {
         String = value;
         Length = length;
     }
     return(this);
 }
Beispiel #6
0
        private string GetFiledClrTypeString(DBFieldInfo fieldInfo)
        {
            string      typeStr;
            DBFieldType dbFieldType = DBHelper.GetDbClrFieldType(fieldInfo.DataType);

            switch (dbFieldType)
            {
            case DBFieldType.Binary:
                typeStr = "byte[]";
                break;

            case DBFieldType.DateTime:
                typeStr = fieldInfo.DataType.Name;
                break;

            case DBFieldType.Number:
                if (fieldInfo.FieldName.EndsWith("ID", StringComparison.OrdinalIgnoreCase) ||
                    fieldInfo.FieldName.EndsWith("no", StringComparison.OrdinalIgnoreCase))
                {
                    typeStr = "long";
                }
                else
                {
                    if (fieldInfo.DataType == ClrSystemType.DecimalType)
                    {
                        typeStr = "double";
                    }
                    else
                    {
                        typeStr = fieldInfo.DataType.Name.ToLower();
                    }
                }
                break;

            case DBFieldType.String:
                typeStr = "string";
                break;

            case DBFieldType.Other:
            default:
                typeStr = fieldInfo.DataType.Name.ToLower();
                break;
            }

            return(typeStr);
        }
Beispiel #7
0
        /// <summary>
        /// Getting the string containing type name from inputting the DBFieldType type
        /// </summary>
        /// <param name="_ft">The inputting DBFieldType type </param>
        /// <returns>The string containing type name</returns>
        public static string GetFieldTypeText(DBFieldType _ft)
        {
            string result;

            switch (_ft)
            {
            case DBFieldType._nvarchar:
                result = "nvarchar";
                break;

            case DBFieldType._int:
                result = "int";
                break;

            case DBFieldType._float:
                result = "float";
                break;

            case DBFieldType._datetime:
                result = "datetime";
                break;

            case DBFieldType._bit:
                result = "bit";
                break;

            case DBFieldType._ntext:
                result = "ntext";
                break;

            case DBFieldType._sql_variant:
                result = "sql_variant";
                break;

            case DBFieldType._lookup:
                result = "lookup";
                break;

            default:
                result = "sql_variant";
                break;
            }
            return(result);
        }
        private (bool parseSuccess, DBFieldType parsedType) TryParse(string value, DBFieldType dBFieldType)
        {
            switch (dBFieldType)
            {
            case DBFieldType.varchar:
                return(true, DBFieldType.varchar);

            case DBFieldType.integer:
                return(TryParseInteger());

            case DBFieldType.@double:
                return(TryParseDouble());

            case DBFieldType.dateTime:
                return(TryParseDateTimeOffset());

            default:
                return(false, DBFieldType.unkown);
            }

            (bool, DBFieldType) TryParseInteger()
            {
                var isInteger = int.TryParse(value, out int intValue);

                return(isInteger ? (isInteger, DBFieldType.integer) : (isInteger, DBFieldType.unkown));
            }

            (bool, DBFieldType) TryParseDateTimeOffset()
            {
                var isDate = DateTimeOffset.TryParse(value, out DateTimeOffset dateTimeOffset);

                return(isDate ? (isDate, DBFieldType.dateTime) : (isDate, DBFieldType.unkown));
            }

            (bool, DBFieldType) TryParseDouble()
            {
                var isDouble = Double.TryParse(value, out Double doubleValue);

                return(isDouble ? (isDouble, DBFieldType.@double) : (isDouble, DBFieldType.unkown));
            }
        }
Beispiel #9
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="owerTableName">所属表名</param>
        /// <param name="fieldName">字段名</param>
        /// <param name="dbTypeName">数据类型</param>
        /// <param name="dataType">数据库字段对应于.net平台的托管类型</param>
        /// <param name="comments">注释</param>
        /// <param name="defaultValue">默认值</param>
        /// <param name="allowNull">是否允许为空值</param>
        /// <param name="fieldType">运行时数据类型</param>
        /// <param name="isPriKey">是否是主键</param>
        public DBFieldInfo(string owerTableName, string fieldName, string dbTypeName, Type dataType,
                           string comments, object defaultValue, bool allowNull, DBFieldType fieldType, bool isPriKey)
        {
            if (string.IsNullOrEmpty(owerTableName))
            {
                throw new ArgumentNullException(nameof(owerTableName));
            }

            if (string.IsNullOrEmpty(fieldName))
            {
                throw new ArgumentNullException(nameof(fieldName));
            }

            if (string.IsNullOrEmpty(dbTypeName))
            {
                throw new ArgumentNullException(nameof(dbTypeName));
            }

            if (dataType == null)
            {
                throw new ArgumentNullException(nameof(dataType));
            }

            this.OwerTableName = owerTableName;
            this.FieldName     = fieldName;
            this.DbTypeName    = dbTypeName;
            this.DataType      = dataType;
            this.Comments      = comments;
            this.DefaultValue  = defaultValue;
            this.AllowNull     = allowNull;
            this.FieldType     = fieldType;
            this.IsPriKey      = isPriKey;

            //解析备注
            this.ParseComments(comments, fieldName);
        }
Beispiel #10
0
 public DBField(DBFieldType dbFieldT)
 {
     Type = dbFieldT.Type;
     Primary = dbFieldT.Primary;
     AutoIncrement = dbFieldT.AutoIncrement;
 }
Beispiel #11
0
 public DBField(DBFieldType dbFieldT)
 {
     Type          = dbFieldT.Type;
     Primary       = dbFieldT.Primary;
     AutoIncrement = dbFieldT.AutoIncrement;
 }
Beispiel #12
0
 /// <summary>
 /// 字段值格式化
 /// </summary>
 /// <param name="fieldType">字段类型</param>
 /// <param name="dataType">数据库字段对应于.net平台运行时数据类型</param>
 /// <param name="value">要格式化的值</param>
 /// <returns>字段值格式化后的字符串</returns>
 public string FieldValueFormat(DBFieldType fieldType, Type dataType, object value)
 {
     return(this.PrimitiveFieldValueFormat(fieldType, dataType, value));
 }
 public DBFieldEntry(string name, DBFieldType fieldType = DBFieldType.unkown)
 {
     Name        = name;
     DBFieldType = fieldType;
 }
Beispiel #14
0
 /// <summary>
 /// Getting the string containing type name from inputting the DBFieldType type
 /// </summary>
 /// <param name="_ft">The inputting DBFieldType type </param>
 /// <returns>The string containing type name</returns>
 public static string GetFieldTypeText(DBFieldType _ft)
 {
     string result;
     switch(_ft)
     {
         case DBFieldType._nvarchar:
             result = "nvarchar";
             break;
         case DBFieldType._int:
             result = "int";
             break;
         case DBFieldType._float:
             result = "float";
             break;
         case DBFieldType._datetime:
             result = "datetime";
             break;
         case DBFieldType._bit:
             result = "bit";
             break;
         case DBFieldType._ntext:
             result = "ntext";
             break;
         case DBFieldType._sql_variant:
             result = "sql_variant";
             break;
         case DBFieldType._lookup:
             result = "lookup";
             break;
         default:
             result = "sql_variant";
             break;
     }
     return result;
 }