/// <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); }
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); }
/// <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)); } }
/// <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); }
public DBField(DBFieldType dbFieldT) { Type = dbFieldT.Type; Primary = dbFieldT.Primary; AutoIncrement = dbFieldT.AutoIncrement; }
/// <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; }
/// <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; }