数据类型的映射¶
神通数据库 JDBC驱动支持大多数由JDBC3.0规范所要求的类型。在类型映射中,我们将讨论JAVA类型、JDBC类型以及后台数据库类型是如何进行相互映射的。比如前台的String对应于JDBC类型中的那种,又对应于后台数据库中的那种类型。
| 序号 | 类型 | 描述 | 有效范围 |
|---|---|---|---|
| 1 | tinyint | 整型数据 | [-128,127] |
| 2 | smallint | 整型数据 | [-32768, 32767] |
| 3 | int | 整型数据 | [-2147483648, 2147483647 ] |
| 4 | bigint | 整型数据 | [-9223372036854775808, 9223372036854775807] |
| 5 | bit | 固定长度的位串数据 | 1,0最大长度限制是 8*8000bit |
| 6 | numeric | 固定精度和小数位的数字数据 | |
| 7 | decimal | 固定精度和小数位的数字数据 | |
| 8 | real | 浮点精度数字 | [-3.4E+38, 3.4E+38] |
| 9 | double precision |
浮点双精度数 | [2.2250738585072014e-308,1.7976931348623158e+308] |
| 10 | float | 浮点精度数字 | [-1E+308, 1E+308] |
| 11 | char | 固定长度的字符数据 | 最大长度为8000个字符 |
| 12 | varchar | 可变长度的字符数据 | 最大长度为8000个字符 |
| 13 | text | 可变长度的字符数据 | 最大长度为16777215个字节 |
| 14 | binary | 定长的二进制字串 | 最大长度为8000 |
| 15 | varbinary | 变长的二进制字串 | 最大长度为8000 |
| 16 | boolean | 布尔类型 | |
| 17 | date | 日期 | |
| 18 | time | 时间 | |
| 19 | timestamp | 时间戳 | |
| 20 | clob | 字符型大对象类型 | 理论上没有限制,可以达到4个G |
| 21 | blob | 二进制大对象类型 | 理论上没有限制,可以达到4个G |
神通数据库数据类型这一列列举了在数据库中的数据类型。
JDBC 类型这一列列举JDBC标准支持的,并在java.sql.Types类中有定义的类型。
标准JAVA类型这一列列举了在JAVA语言中定义的标准类型。
| 序号 | 神通数据库 | JDBC类型 | 标准JAVA类型 |
|---|---|---|---|
| 1 | tinyint | java.sql.Types.TINYINT | byte |
| 2 | smallint | java.sql.Types.SMALLINT | short |
| 3 | int | java.sql.Types.INT | int |
| 4 | bigint | java.sql.Types.BIGINT | long |
| 5 | bit | java.sql.Types.BIT | boolean |
| 6 | numeric | java.sql.Types.NUMERIC | java.math.BigDecimal |
| 7 | decimal | java.sql.Types.DECIMAL | java.math.BigDecimal |
| 8 | real | java.sql.Types.REAL | float |
| 9 | double precision | java.sql.Types.DOUBLE | double |
| 10 | float | java.sql.Types.FLOAT | double |
| 11 | char | java.sql.Types.CHAR | java.lang.String |
| 12 | varchar | java.sql.Types.VARCHAR | java.lang.String |
| 13 | text | java.sql.Types.LONGVARCHAR | java.lang.String |
| 14 | binary | java.sql.Types.BINARY | byte[] |
| 15 | varbinary | java.sql.Types.VARBINARY | byte[] |
| 16 | boolean | java.sql.Types.BOOLEAN | boolean |
| 17 | date | java.sql.Types.DATE | java.sql.Date |
| 18 | time | java.sql.Types.TIME | java.sql.Time |
| 19 | timestamp | java.sql.Types.TIMESTAMP | java.sql.Timestamp |
| 20 | clob | java.sql.Types.CLOB | java.sql.Clob |
| 21 | blob | java.sql.Types.BLOB | java.sql.Blob |
备注::
关于binary类型,如果用户插入的数据没有达到定义的长度,后台数据库会自动补0,故最后读出的byte数组的长度为定义时的长度。
关于char类型,如果用户插入的数据没有达到定义的长度,后台数据库会自动补空格,故最后读出的String对象的长度为定义时的长度。
关于bit类型,由于JDBC类型中的java.sql.Types.Bit对应于boolean,故最后读出的bit也为boolean类型。比如在数据库中插入的为B’,通过JDBC读的时候将判断是否为0,如果不为0,就返回true,否则返回false,对上述例子就返回true。