(转)C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)

一、C# vs SQLite:

C#SQLite
字段名类型库类型GetFieldType(#)转换备注
F_BOOLboolBIT NOT NULLBoolean  
F_BOOL_NULLbool?BITBoolean  
F_SBYTEsbyteINT8 NOT NULLSBytesbyte_ 
F_SBYTE_NULLsbyte?INT8SBytesbyte_ 
F_BYTEbyteUINT8 NOT NULLByte  
F_BYTE_NULLbyte?UINT8Byte  
F_SHORTshortINT16 NOT NULLInt16  
F_SHORT_NULLshort?INT16Int16  
F_USHORTushortUINT16 NOT NULLUInt16ushort_ 
F_USHORT_NULLushort?UINT16UInt16ushort_ 
F_INTintINT32 NOT NULLInt32  
F_INT_NULLint?INT32Int32  
F_UINTuintUINT32 NOT NULLUInt32uint_ 
F_UINT_NULLuint?UINT32UInt32uint_ 
F_LONGlongINT64 NOT NULLInt64  
F_LONG_NULLlong?INT64Int64  
F_ULONGulongUINT64 NOT NULLUInt64ulong_ 
F_ULONG_NULLulong?UINT64UInt64ulong_ 
F_FLOATfloatFLOAT NOT NULLDouble 不转兼容
F_FLOAT_NULLfloat?FLOATDouble 不转兼容
F_DOUBLEdoubleDOUBLE NOT NULLDouble  
F_DOUBLE_NULLdouble?DOUBLEDouble  
F_DECIMALdecimalDECIMAL NOT NULLDecimal 存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335]
F_DECIMAL_NULLdecimal?DECIMALDecimal 存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335]
F_CHARcharTEXT NOT NULLString  
F_CHAR_NULLchar?TEXTString  
F_STRINGstringTEXT NOT NULLString  
F_STRING_NULLstringTEXTString  
F_DATETIMEDateTimeTEXT NOT NULLString  
F_DATETIME_NULLDateTime?TEXTString  
      

二、 C# vs MySQL:

C#MySQL
字段名类型库类型GetFieldType(#)转换备注
F_BOOLboolBOOL NOT NULLBoolean  
F_BOOL_NULLbool?BOOL NULLBoolean  
F_SBYTEsbyteTINYINT NOT NULLSBytesbyte_ 
F_SBYTE_NULLsbyte?TINYINT NULLSBytesbyte_ 
F_BYTEbyteTINYINT UNSIGNED NOT NULLByte  
F_BYTE_NULLbyte?TINYINT UNSIGNED NULLByte  
F_SHORTshortSMALLINT NOT NULLInt16  
F_SHORT_NULLshort?SMALLINT NULLInt16  
F_USHORTushortSMALLINT UNSIGNED NOT NULLUInt16ushort_ 
F_USHORT_NULLushort?SMALLINT UNSIGNED NULLUInt16ushort_ 
F_INTintINT NOT NULLInt32  
F_INT_NULLint?INT NULLInt32  
F_UINTuintINT UNSIGNED NOT NULLUInt32uint_ 
F_UINT_NULLuint?INT UNSIGNED NULLUInt32uint_ 
F_LONGlongBIGINT NOT NULLInt64  
F_LONG_NULLlong?BIGINT NULLInt64  
F_ULONGulongBIGINT UNSIGNED NOT NULLUInt64ulong_ 
F_ULONG_NULLulong?BIGINT UNSIGNED NULLUInt64ulong_ 
F_FLOATfloatFLOAT NOT NULLSingle 极值溢出
F_FLOAT_NULLfloat?FLOAT NULLSingle 极值溢出
F_DOUBLEdoubleDOUBLE NOT NULLDouble  
F_DOUBLE_NULLdouble?DOUBLE NULLDouble  
F_DECIMALdecimalDECIMAL NOT NULLDecimal 极值溢出
F_DECIMAL_NULLdecimal?DECIMAL NULLDecimal 极值溢出
F_CHARcharCHARACTER NOT NULLString 中文报错
F_CHAR_NULLchar?CHARACTER NULLString 中文报错
F_STRINGstringVARCHAR(50) NOT NULLString  
F_STRING_NULLstringVARCHAR(50) NULLString  
F_DATETIMEDateTimeDATETIME NOT NULLDateTime  
F_DATETIME_NULLDateTime?DATETIME NULLDateTime  
      

三、 C# vs MSSQL:

C#MSSQL
字段名类型库类型GetFieldType(#)转换备注
F_BOOLboolbit NOT NULLBoolean  
F_BOOL_NULLbool?bit NULLBoolean  
F_SBYTEsbytesmallint NOT NULLInt16sbyte_short 
F_SBYTE_NULLsbyte?smallint NULLInt16sbyte_short 
F_BYTEbytetinyint NOT NUL;Byte  
F_BYTE_NULLbyte?tinyint NULLByte  
F_SHORTshortsmallint NOT NULLInt16  
F_SHORT_NULLshort?smallint NULLInt16  
F_USHORTushortint NOT NULLInt32ushort_int 
F_USHORT_NULLushort?int NULLInt32ushort_int 
F_INTintint NOT NULLInt32  
F_INT_NULLint?int NULLInt32  
F_UINTuintbigint NOT NULLInt64uint_long 
F_UINT_NULLuint?bigint NULLInt64uint_long 
F_LONGlongbigint NOT NULLInt64  
F_LONG_NULLlong?bigint NULLInt64  
F_ULONGulongreal NOT NULLSingleulong_float 
F_ULONG_NULLulong?real NULLSingleulong_float 
F_FLOATfloatreal NOT NULLSingle  
F_FLOAT_NULLfloat?real NULLSingle  
F_DOUBLEdoublefloat NOT NULLDouble  
F_DOUBLE_NULLdouble?float NULLDouble  
F_DECIMALdecimaldecimal NOT NULLDecimal 极值溢出
F_DECIMAL_NULLdecimal?decimal NULLDecimal 极值溢出
F_CHARcharchar(1) NOT NULLString  
F_CHAR_NULLchar?char(1) NULLString  
F_STRINGstringvarchar(50) NOT NULLF_STRING:  
F_STRING_NULLstringvarchar(50) NULLString  
F_DATETIMEDateTimedatetime NOT NULLDateTime 必须介于 1/1/1753 12:00:00 AM 12/31/9999 11:59:59 PM 之间。
F_DATETIME_NULLDateTime?datetime NULLDateTime  
      

四、C# vs Oracle:

C#Oracle
字段名类型库类型GetFieldType(#)转换备注
F_BOOLboolCHAR(1) NOT NULLStringbool_string 
F_BOOL_NULLbool?CHAR(1)Stringbool_string 
F_SBYTEsbyteNUMBER(3) NOT NULLInt16sbyte_short 
F_SBYTE_NULLsbyte?NUMBER(3)Int16sbyte_short 
F_BYTEbyteNUMBER(3) NOT NULLInt16byte_short 
F_BYTE_NULLbyte?NUMBER(3)Int16byte_short 
F_SHORTshortNUMBER(5) NOT NULLInt32short_int 
F_SHORT_NULLshort?NUMBER(5)Int32short_int 
F_USHORTushortNUMBER(5) NOT NULLInt32ushort_int 
F_USHORT_NULLushort?NUMBER(5)Int32ushort_int 
F_INTintNUMBER(10) NOT NULLInt64int_long 
F_INT_NULLint?NUMBER(10)Int64int_long 
F_UINTuintNUMBER(10) NOT NULLInt64uint_long 
F_UINT_NULLuint?NUMBER(10)Int64uint_long 
F_LONGlongNUMBER(19) NOT NULLDecimallong_decimal 
F_LONG_NULLlong?NUMBER(19)Decimallong_decimal 
F_ULONGulongNUMBER(19) NOT NULLDecimalulong_decimal 
F_ULONG_NULLulong?NUMBER(19)Decimalulong_decimal 
F_FLOATfloatBINARY_FLOAT NOT NULLSingle  
F_FLOAT_NULLfloat?BINARY_FLOATSingle  
F_DOUBLEdoubleBINARY_DOUBLE NOT NULLDouble 极值溢出
F_DOUBLE_NULLdouble?BINARY_DOUBLEDouble 极值溢出
F_DECIMALdecimalDECIMAL(33,3) NOT NULLDecimal  
F_DECIMAL_NULLdecimal?DECIMAL(33,3)Decimal  
F_CHARcharCHAR(1) NOT NULLString  
F_CHAR_NULLchar?CHAR(1)String  
F_STRINGstringVARCHAR(50) NOT NULLString 不允许空字符
F_STRING_NULLstringVARCHAR(50)String 不允许空字符
F_DATETIMEDateTimeTIMESTAMP NOT NULLDateTime 大值读取报错
F_DATETIME_NULLDateTime?TIMESTAMPDateTime 大值读取报

 

using System;
using System.Collections.Generic;
using System.Text;

namespace vJine.Core.ORM {
    public class TypeConverter {

        public class sbyte_ /*: IConverter<sbyte>*/ {
            public static sbyte CONV_Q(object V) {
                return (sbyte)V;
            }
        }

        public class ushort_ /*: IConverter<ushort>*/ {
            public static ushort CONV_Q(object V) {
                return (ushort)V;
            }
        }

        public class uint_ /*: IConverter<uint>*/ {
            public static uint CONV_Q(object V) {
                return (uint)V;
            }
        }

        public class ulong_ /*: IConverter<ulong>*/ {
            public static ulong CONV_Q(object V) {
                return (ulong)V;
            }
        }

        public class bool_string /*: IConverter<bool>*/ {
            public static object CONV_I(object V) {
                if ((bool)V == true) {
                    return "1";
                } else {
                    return "0";
                }
            }

            public static bool CONV_Q(object V) {
                if ((string)V == "1") {
                    return true;
                } else {
                    return false;
                }
            }
        }

        public class sbyte_short /*: IConverter<sbyte>*/ {

            public static object CONV_I(object V) {
                return Convert.ToInt16(V);
            }

            public static sbyte CONV_Q(object V) {
                return Convert.ToSByte(V);
            }
        }

        public class byte_short /*: IConverter<byte>*/ {
            public static object CONV_I(object V) {
                return Convert.ToInt16(V);
            }

            public static byte CONV_Q(object V) {
                return Convert.ToByte(V);
            }
        }

        public class short_int /*: IConverter<short>*/ {
            public static object CONV_I(object V) {
                return Convert.ToInt32(V);
            }

            public static short CONV_Q(object V) {
                return Convert.ToInt16(V);
            }
        }

        public class ushort_int /*: IConverter<ushort>*/ {
            public static object CONV_I(object V, string Name) {
                return Convert.ToInt32(V);
            }

            public static ushort CONV_Q(object V, string Name) {
                return Convert.ToUInt16(V);
            }
        }

        public class int_long /*: IConverter<int>*/ {
            public static object CONV_I(object V) {
                return Convert.ToInt64(V);
            }

            public static int CONV_Q(object V) {
                return Convert.ToInt32(V);
            }
        }

        public class uint_long /*: IConverter<uint>*/ {
            public static object CONV_I(object V) {
                return Convert.ToInt64(V);
            }

            public static uint CONV_Q(object V) {
                return Convert.ToUInt32(V);
            }
        }

        public class long_decimal /*: IConverter<long>*/ {
            public static object CONV_I(object V) {
                return decimal.Parse(V.ToString());
            }

            public static long CONV_Q(object V) {
                return long.Parse(V.ToString());
            }
        }

        public class ulong_float /*: IConverter<ulong>*/ {
            public static object CONV_I(object V) {
                return Convert.ToSingle(V);
            }

            public static ulong CONV_Q(object V) {
                return Convert.ToUInt64(V);
            }
        }

        public class ulong_decimal /*: IConverter<ulong>*/ {
            public static object CONV_I(object V) {
                return decimal.Parse(V.ToString());
            }

            public static ulong CONV_Q(object V) {
                return ulong.Parse(V.ToString());
            }
        }

        public class float_double /*: IConverter<float>*/ {
            public static object CONV_I(object V) {
                return Convert.ToDouble(V);
            }

            public static float CONV_Q(object V) {
                return Convert.ToSingle(V);
            }
        }

        public class char_string /*: IConverter<char>*/ {
            public static object CONV_I(object V) {
                if (V is Char) {
                    return V;
                } else if (V is string) {
                    string chars = (string)V;
                    if (chars == "") {
                        return '\0';
                    } else {
                        return chars[0];
                    }
                } else {
                    throw new OrmException("Fail To Convert String[{0}] To Char", V);
                }
            }

            public static char CONV_Q(object V) {
                return ((string)V)[0];
            }
        }

        public class DateTime_ /*: IConverter<DateTime>*/ {
            public static object CONV_I(object V) {
                return V;
            }

            public static DateTime CONV_Q(object V) {
                return (DateTime)V;
            }
        }
    }
}
View Code

 

转载于:https://www.cnblogs.com/ywcz060/p/3468605.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值