类型映射¶
神通数据库 .NET DATA PROVIDER驱动支持大多数由.net 规范所要求的类型.
在类型映射中,我们将讨论.NET类型、PROVIDER类型以及后台数据库类型是如何进行相互映射的.
比如前台的String对应于PROVIDER类型中的那种,又对应于后台数据库中的那种类型.
数据类型信息¶
| 序号 | 类型 | 描述 | 有效范围 |
|---|---|---|---|
| 1 | tinyint | 整型数据 | [-128,127] |
| 2 | smallint | 整型数据 | [-32768, 32767] |
| 3 | int | 整型数据 | [-2147483648, 2147483647 ] |
| 4 | bigint | 整型数据 | [-922 3372036854775808, 922 3372036854775807] |
| 5 | bit | 固 定长度的位串数据 | 1,0 (最大长度 限制是8*8000bit) |
| 6 | numeric | 固定精度和 小数位的数字数据 | |
| 7 | decimal | 固定精度和 小数位的数字数据 | |
| 8 | real | 浮点精度数字 | [-3.4E+38, 3.4E+38] |
| 9 | double precision | 浮点双精度数 | [2.225073858507 2014e-308,1.79769 31348623158e+308] |
| 10 | float | 浮点精度数字 | [-1E+308, 1E+308] |
| 11 | char | 固 定长度的字符数据 | 最大 长度为8000个字符 |
| 12 | varchar | 可 变长度的字符数据 | 最大 长度为8000个字符 |
| 13 | text | 可 变长度的字符数据 | 最大长度为16 M(16777215个字节) |
| 14 | binary | 定长的二进制字串 | 最大长度为8000 |
| 15 | varbinary | 变长的二进制字串 | 最大长度为8000 |
| 16 | boolean | 布尔类型 | |
| 17 | date | 日期 | |
| 18 | time | 时间 | |
| 19 | timestamp | 时间戳 | |
| 20 | clob | 字符型大对象类型 | 理论上没有 限制,可以达到4个G |
| 21 | blob | 二进制大对象类型 | 理论上没有 限制,可以达到4个G |
数据类型映射表¶
神通数据库数据类型、PROVIDER类型和标准C#类型之间的映射
| 序号 | 数据库类型 | DbType 类型 | Type类型 | Osc arDbType类型 |
|---|---|---|---|---|
| 1 | tinyint | DbType.SByte | Byte | OscarDb Type.TinyInt |
| 2 | smallint | DbType.Int16 | Int16 | OscarDbT ype.SmallInt |
| 3 | int | DbType.Int32 | Int32 | OscarDb Type.Integer |
| 4 | bigint | DbType.Int64 | Long/Int64 | OscarD bType.BigInt |
| 5 | bit | Db Type.Boolean | Boolean | OscarDb Type.Boolean |
| 6 | numeric | Db Type.Decimal | Decimal | OscarDb Type.Decimal |
| 7 | decimal | Db Type.Decimal | Decimal | OscarDb Type.Decimal |
| 8 | real | D bType.Single | Single | Osca rDbType.Real |
| 9 | double precision | D bType.Double | double | OscarD bType.Double |
| 10 | float | D bType.Double | double | OscarD bType.Double |
| 11 | char | D bType.String | Char | Osca rDbType.Char |
| 12 | varchar | D bType.String | String | OscarDb Type.VarChar |
| 13 | text | D bType.String | String | Osca rDbType.Text |
| 14 | binary | D bType.Binary | Byte[] | OscarD bType.Binary |
| 15 | varbinary | D bType.Binary | Byte[] | OscarD bType.Binary |
| 16 | boolean | Db Type.Boolean | Bool | OscarDb Type.Boolean |
| 17 | date | DbType.DATE | DateTime | Osca rDbType.Date |
| 18 | time | DbType.TIME | DateTime | Osca rDbType.Time |
| 19 | timestamp | DbT ype.DateTime | DateTime | OscarDbTy pe.TimeStamp |
| 20 | clob | D bType.String | String | Osca rDbType.Clob |
| 21 | blob | D bType.Binary | Byte[] | Osca rDbType.Blob |
| 22 | timestamptz | DbType.Da teTimeOffset | Da teTimeOffset | OscarDbType .TimestampTZ |
| 23 | timetz | DbType.TIME | Da teTimeOffset | OscarD bType.TimeTZ |
| 24 | interval | D bType.Object | TimeSpan | OscarDbT ype.Interval |
| 25 | interval year to month | D bType.String | String | OscarDbType .Intervalytm |
| 26 | interval day to second | D bType.Object | TimeSpan | OscarDbType .Intervaldts |
- 关于binary类型,如果用户插入的数据没有达到定义的长度,后台数据库会自动补0,故最后读出的byte数组的长度为定义时的长度.
- 关于char类型,如果用户插入的数据没有达到定义的长度,后台数据库会自动补空格,故最后读出的String对象的长度为定义时的长度.
引用