Java 和 GBase 数据类型转换
由于 SQL 数据类型和 Java 数据类型是不同的,因此需要某种机制在使用 Java 类型的应用程序和使用 SQL 类型的数据库之间来读写数据。 为此,JDBC 提供了 getXXX 和 setXXX 方法集、方法 registerOutParameter 和类 Types。 GBase JDBC 在处理 GBase 数据类型与 Java 数据的类型的转换上很灵活。 一般地,任何 GBase 数据类型都可以转换成一个 java.lang.String,且任 何数值类型都可以转换成 Java 的任意数值类型,虽然可能会发生近似,溢出或 精度损失。 GBase JDBC 驱动会像 JDBC 规范所要求的那样使用警告或抛出 DataTruncation 意外,除非通过使用"jdbcCompliantTruncation"属性并把它设 置为 false 来设置连接,让它不这么做。 在下表中列出了能可靠工作的转换: 表 4-1 GBase Server 数据类型与 Java 类型映射关系 GBase Server 数据类型 总是可以转化为的 Java 类型 CHAR, VARCHAR, BLOB, TEXT, LONGBLOB java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Clob FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT java.math.BigDecimal 注意:与希望转换的 GBase 数据类型相 比,如果选择了精度较低的 Java 数值类 型,可能会出现舍入、溢出或精度损失 DATE, TIME, DATETIME, java.lang.String, java.sql.Date,
GBase Server 数据类型 总是可以转化为的 Java 类型
TIMESTAMP java.sql.Timestamp
在 GBase Server 类型和 Java 类型之间,ResultSet.getObject()方法采用
了下述类型转换方式,在可能的情况下遵从 JDBC 规范:
表 4-2 GBase Server 数据类型、JDBC 数据类型、Java 类映射关系 GBase Server 数据类型名 JDBC 数据类型(GetColumnType 方
法的返回值)
返回的 Java 类
TINYINT TINYINT java.lang.Boolea
n 如 果 配 置 属 性
tinyInt1isBit 设
置 成 true ( 缺
省),且存储大小设
置为 1, 如果没有
上 述 设 置 为
java.lang.Intege
r
BOOL, BOOLEAN BIT java.lang.Boolea
n
SMALLINT[(M)] SMALLINT java.lang.Intege
r
MEDIUMINT[(M)] INTEGER java.lang.Intege
r
INT,INTEGER[(M)] INTEGER java.lang.Intege
r
BIGINT[(M)] INTEGER java.lang.Long
REAL[(M,D)] DOUBLE Java.lang.Double
FLOAT[(M,D)] REAL java.lang.Float
DOUBLE[(M,B)] DOUBLE java.lang.Double
DECIMAL[(M[,D])] DECIMAL java.math.BigDec
imal
GBase Server 数据类型名 JDBC 数据类型(GetColumnType 方
法的返回值)
返回的 Java 类
NUMERIC[(M,D)] DECIMAL java.math.BigDec
imal
DATE DATE java.sql.Date
DATETIME TIMESTAMP java.sql.Timesta
mp
TIMESTAMP[(M)] TIMESTAMP java.sql.Timesta
mp
TIME TIME java.sql.Time
YEAR[(2|4)] DATE 如 果
yearIsDateType
配 置 属 性 设 置 为
false, 则返回对
象 类 型 为
java.sql.Short.
如果设置成 true
(缺省值)则返回
java.sql.Date
CHAR(M) CHAR java.lang.String
(如果列字符集设
置为 BINARY,则返
回 byte[])
VARCHAR(M) [BINARY] VARCHAR java.lang.String
(如果列字符集设
置为 BINARY,则返
回 byte[])
TINYBLOB VARBINARY byte[]
TINYTEXT LONGVARCHAR java.lang.String
TEXT LONGVARCHAR java.lang.String
MEDIUMBLOB LONGVARBINARY byte[]
MEDIUMTEXT LONGVARCHAR java.lang.String
GBase Server 数据类型名 JDBC 数据类型(GetColumnType 方
法的返回值)
返回的 Java 类
LONGBLOB LONGVARBINARY byte[]
LONGTEXT LONGVARCHAR java.lang.String




