示例#1
0
        private string ToDbType(EFieldDbType dbType, int maxLength)
        {
            switch (dbType)
            {
            case EFieldDbType.Boolean:
                return("[bit]");

            case EFieldDbType.GUID:
                return("[uniqueidentifier]");

            case EFieldDbType.Currency:
                return("[money]");

            case EFieldDbType.Double:
                return("[float]");

            case EFieldDbType.DateTime:
                return("[datetime]");

            case EFieldDbType.Integer:
                return("[int]");

            case EFieldDbType.String:
                return($"[nvarchar]({maxLength})");

            case EFieldDbType.Text:
            case EFieldDbType.Binary:
            default:
                return("[nvarchar](MAX)");
            }
        }
示例#2
0
        /// <summary>
        /// 建立欄位並加入資料表中。
        /// </summary>
        /// <param name="fieldName">欄位名稱。</param>
        /// <param name="caption">欄位標題。</param>
        /// <param name="fieldDbType">欄位資料型別。</param>
        /// <param name="defaultValue">預設值。</param>
        public DataColumn AddColumn(string fieldName, string caption, EFieldDbType fieldDbType, object defaultValue)
        {
            Type oDataType;

            oDataType = DbTypeConverter.ToType(fieldDbType);
            return(AddColumn(fieldName, caption, oDataType, defaultValue));
        }
示例#3
0
        /// <summary>
        /// 依欄位資料型別取得預設值(字串預設為空字串、數值預設為 0,布林值預設為 false,其他為 DBNull.Value)。
        /// </summary>
        /// <param name="dbType">欄位資料型別。</param>
        public static object GetDefaultValue(EFieldDbType dbType)
        {
            switch (dbType)
            {
            case EFieldDbType.String:
            case EFieldDbType.Text:
                return(string.Empty);

            case EFieldDbType.Boolean:
                return(false);

            case EFieldDbType.Integer:
            case EFieldDbType.Double:
            case EFieldDbType.Currency:
                return(0);

            case EFieldDbType.DateTime:
                return(DateTime.Today);

            case EFieldDbType.GUID:
                return(Guid.Empty);

            default:
                return(DBNull.Value);
            }
        }
示例#4
0
        /// <summary>
        /// 將 EFieldDbType 轉型為 DbType 型別。
        /// </summary>
        /// <param name="fieldDbType">欄位資料型別。</param>
        public static DbType ToDbType(EFieldDbType fieldDbType)
        {
            switch (fieldDbType)
            {
            case EFieldDbType.String:
                return(DbType.String);

            case EFieldDbType.Text:
                return(DbType.String);

            case EFieldDbType.Boolean:
                return(DbType.Boolean);

            case EFieldDbType.Integer:
                return(DbType.Int32);

            case EFieldDbType.Double:
                return(DbType.Double);

            case EFieldDbType.Currency:
                return(DbType.Currency);

            case EFieldDbType.DateTime:
                return(DbType.DateTime);

            case EFieldDbType.GUID:
                return(DbType.Guid);

            case EFieldDbType.Binary:
                return(DbType.Binary);

            default:
                throw new GException("{0} can't convert to DbType", fieldDbType);
            }
        }
示例#5
0
        /// <summary>
        /// 設定命令參數的資料型別。
        /// </summary>
        /// <param name="parameter">命令參數。</param>
        /// <param name="dbType">欄位資料型別。</param>
        public override void SetParameterDbType(DbParameter parameter, EFieldDbType dbType)
        {
            SqlParameter oParameter;

            oParameter           = parameter as SqlParameter;
            oParameter.SqlDbType = DatabaseFunc.ToSqlDbType(dbType);
        }
示例#6
0
        /// <summary>
        /// 將 EFieldDbType 轉型為 System.Type。
        /// </summary>
        /// <param name="fieldDbType">欄位資料型別。</param>
        public static Type ToType(EFieldDbType fieldDbType)
        {
            switch (fieldDbType)
            {
            case EFieldDbType.String:
                return(typeof(string));

            case EFieldDbType.Text:
                return(typeof(string));

            case EFieldDbType.Boolean:
                return(typeof(bool));

            case EFieldDbType.Integer:
                return(typeof(int));

            case EFieldDbType.Double:
                return(typeof(double));

            case EFieldDbType.Currency:
                return(typeof(decimal));

            case EFieldDbType.DateTime:
                return(typeof(DateTime));

            case EFieldDbType.GUID:
                return(typeof(Guid));

            case EFieldDbType.Binary:
                return(typeof(byte[]));

            default:
                throw new GException("{0} can't convert to System.Type", fieldDbType);
            }
        }
示例#7
0
        /// <summary>
        /// 轉換 FieldDbType 為 SqlDbType。
        /// </summary>
        /// <param name="fieldDbType">FieldType列舉。</param>
        public static SqlDbType ToSqlDbType(EFieldDbType fieldDbType)
        {
            switch (fieldDbType)
            {
            case EFieldDbType.String: return(SqlDbType.NVarChar);

            case EFieldDbType.Text: return(SqlDbType.NVarChar);

            case EFieldDbType.Boolean: return(SqlDbType.Bit);

            case EFieldDbType.Integer: return(SqlDbType.Int);

            case EFieldDbType.Currency: return(SqlDbType.Money);

            case EFieldDbType.Double: return(SqlDbType.Float);

            case EFieldDbType.DateTime: return(SqlDbType.DateTime);

            case EFieldDbType.GUID: return(SqlDbType.UniqueIdentifier);

            case EFieldDbType.Binary: return(SqlDbType.Binary);

            default:
                throw new GException("{0} can't convert to SqlDbType", fieldDbType.ToString());
            }
        }
示例#8
0
        /// <summary>
        /// 設定命令參數的資料型別。
        /// </summary>
        /// <param name="parameter">命令參數。</param>
        /// <param name="dbType">欄位資料型別。</param>
        public override void SetParameterDbType(DbParameter parameter, EFieldDbType dbType)
        {
            OracleParameter oParameter;

            oParameter            = parameter as OracleParameter;
            oParameter.OracleType = DatabaseFunc.ToOracleType(dbType);
        }
示例#9
0
        /// <summary>
        /// 新增命令參數。
        /// </summary>
        /// <param name="name">參數名稱。</param>
        /// <param name="dbType">資料型別。</param>
        /// <param name="value">參數值。</param>
        /// <param name="direction">設定參數是否為只能輸入、只能輸出、雙向 (Bidirectional) 或預存程序 (Stored Procedure) 傳回值參數。</param>
        public DbParameter AddParameter(string name, EFieldDbType dbType, object value, ParameterDirection direction)
        {
            DbParameter oParameter;

            oParameter           = this.AddParameter(name, dbType, value);
            oParameter.Direction = direction;
            return(oParameter);
        }
示例#10
0
        /// <summary>
        /// 建立欄位並加入資料表。
        /// </summary>
        /// <param name="fieldName">欄位名稱。</param>
        /// <param name="fieldDbType">欄位資料型別。</param>
        public DataColumn AddColumn(string fieldName, EFieldDbType fieldDbType)
        {
            Type oDataType;

            oDataType = DbTypeConverter.ToType(fieldDbType);
            object oDefaultValue = DataFunc.GetDefaultValue(oDataType);

            return(this.AddColumn(fieldName, oDataType, oDefaultValue));
        }
示例#11
0
        /// <summary>
        /// 新增命令參數。
        /// </summary>
        /// <param name="name">參數名稱。</param>
        /// <param name="dbType">資料型別。</param>
        /// <param name="value">參數值。</param>
        /// <param name="size">資料最大長度。</param>
        public DbParameter AddParameter(string name, EFieldDbType dbType, object value, int size)
        {
            DbParameter oParameter;

            oParameter       = this.AddParameter(name, dbType);
            oParameter.Value = GetParameterValue(dbType, value);
            oParameter.Size  = size;
            return(oParameter);
        }
示例#12
0
 /// <summary>
 /// 取得轉換後的參數值。
 /// </summary>
 /// <param name="dbType">欄位資料型別。</param>
 /// <param name="value">參數值。</param>
 public override object GetParameterValue(EFieldDbType dbType, object value)
 {
     if (dbType == EFieldDbType.GUID)
     {
         return(value.ToString());
     }
     else
     {
         return(base.GetParameterValue(dbType, value));
     }
 }
示例#13
0
 /// <summary>
 /// 將傳入值轉型為指定欄位資料型別。
 /// </summary>
 /// <param name="fieldDbType">欄位資料型別。</param>
 /// <param name="value">傳入值。</param>
 /// <param name="defaultValue">無法正確轉型的預設值。</param>
 public static object CFieldValue(EFieldDbType fieldDbType, object value, object defaultValue)
 {
     try
     {
         return(CFieldValue(fieldDbType, value));
     }
     catch
     {
         return(defaultValue);
     }
 }
示例#14
0
        /// <summary>
        /// 新增命令參數。
        /// </summary>
        /// <param name="name">參數名稱。</param>
        /// <param name="dbType">資料型別。</param>
        public DbParameter AddParameter(string name, EFieldDbType dbType)
        {
            DbParameter oParameter;

            oParameter = CreateDbParameter();
            oParameter.ParameterName = GetParameterName(name);
            // 設定命令參數的資料型別
            this.SetParameterDbType(oParameter, dbType);

            this.DbCommand.Parameters.Add(oParameter);
            return(oParameter);
        }
示例#15
0
 /// <summary>
 /// 取得轉換後的參數值。
 /// </summary>
 /// <param name="dbType">欄位資料型別。</param>
 /// <param name="value">參數值。</param>
 public virtual object GetParameterValue(EFieldDbType dbType, object value)
 {
     if (dbType == EFieldDbType.DateTime)
     {
         if (BaseFunc.IsEmpty(BaseFunc.CDateTime(value)))
         {
             return(DBNull.Value);
         }
         else
         {
             return(value);
         }
     }
     else
     {
         return(value);
     }
 }
示例#16
0
 /// <summary>
 /// 取得篩選值。
 /// </summary>
 /// <param name="dbType">欄位資料型別。</param>
 /// <param name="value">輸入值。</param>
 private string GetFilterValue(EFieldDbType dbType, object value)
 {
     if (dbType == EFieldDbType.DateTime)
     {
         if (BaseFunc.IsNullOrDBNull(value))
         {
             return(string.Empty);
         }
         else
         {
             return(BaseFunc.CDateTime(value).ToString("yyyy/MM/dd"));
         }
     }
     else
     {
         return(BaseFunc.CStr(value));
     }
 }
示例#17
0
        /// <summary>
        /// 依欄位資料型別設定欄位值
        /// </summary>
        /// <param name="dbType"></param>
        /// <param name="fieldValue"></param>
        /// <returns></returns>
        public static object SetFieldValue(EFieldDbType dbType, object fieldValue)
        {
            object result = null;

            switch (dbType)
            {
            case EFieldDbType.String:
            case EFieldDbType.Text:
                result = BaseFunc.CStr(fieldValue);
                break;

            case EFieldDbType.Boolean:
                result = BaseFunc.CBool(fieldValue);
                break;

            case EFieldDbType.Integer:
                result = BaseFunc.CInt(fieldValue);
                break;

            case EFieldDbType.Double:
                result = BaseFunc.CDouble(fieldValue);
                break;

            case EFieldDbType.Currency:
                result = BaseFunc.CDecimal(fieldValue);
                break;

            case EFieldDbType.DateTime:
                result = BaseFunc.CDateTime(fieldValue);
                break;

            case EFieldDbType.GUID:
                result = Guid.Parse(fieldValue.ToString());
                break;

            default:
                result = fieldValue;
                break;
            }

            return(result);
        }
示例#18
0
        /// <summary>
        /// 將傳入值轉型為指定欄位資料型別。
        /// </summary>
        /// <param name="fieldDbType">欄位資料型別。</param>
        /// <param name="value">傳入值。</param>
        public static object CFieldValue(EFieldDbType fieldDbType, object value)
        {
            switch (fieldDbType)
            {
            case EFieldDbType.String:
                return(BaseFunc.CStr(value).Trim());     // 去除左右空白

            case EFieldDbType.Text:
                return(BaseFunc.CStr(value).Trim());     // 去除左右空白

            case EFieldDbType.Boolean:
                return(BaseFunc.CBool(value));

            case EFieldDbType.Integer:
                return(BaseFunc.CInt(value));

            case EFieldDbType.Double:
                return(BaseFunc.CDouble(value));

            case EFieldDbType.Currency:
                return(BaseFunc.CDecimal(value));

            case EFieldDbType.DateTime:
                if (BaseFunc.IsDBNull(value))
                {
                    return(value);
                }
                else
                {
                    return(BaseFunc.CDateTime(value));
                }

            case EFieldDbType.GUID:
                return(BaseFunc.CGuid(value));

            default:
                return(value);
            }
        }
示例#19
0
        /// <summary>
        /// 轉換 FieldDbType 為 OracleTypem。
        /// </summary>
        /// <param name="fieldDbType">FieldType列舉。</param>
        public static OracleType ToOracleType(EFieldDbType fieldDbType)
        {
            switch (fieldDbType)
            {
            case EFieldDbType.String: return(OracleType.NChar);

            case EFieldDbType.Text: return(OracleType.NVarChar);

            case EFieldDbType.Boolean: return(OracleType.Char);

            case EFieldDbType.Integer: return(OracleType.Int32);

            case EFieldDbType.Double: return(OracleType.Double);

            case EFieldDbType.DateTime: return(OracleType.DateTime);

            case EFieldDbType.Currency: return(OracleType.Number);

            case EFieldDbType.GUID: return(OracleType.NVarChar);

            default:
                throw new GException("{0} can't convert to OracleType", fieldDbType.ToString());
            }
        }
示例#20
0
 /// <summary>
 /// 新增命令參數。
 /// </summary>
 /// <param name="name">參數名稱。</param>
 /// <param name="dbType">資料型別。</param>
 /// <param name="value">參數值。</param>
 public DbParameter AddParameter(string name, EFieldDbType dbType, object value)
 {
     return(AddParameter(name, dbType, value, 0));
 }
示例#21
0
 /// <summary>
 /// 設定命令參數的資料型別。
 /// </summary>
 /// <param name="parameter">命令參數。</param>
 /// <param name="dbType">欄位資料型別。</param>
 public virtual void SetParameterDbType(DbParameter parameter, EFieldDbType dbType)
 {
     parameter.DbType = DbTypeConverter.ToDbType(dbType);
 }