由于每个数据库供应商支持的 SQL 数据类型之间存在差异,JDBC API 在
类 java.sql.Types 中定义了一组通用 SQL 数据类型。
使用这些 JDBC API 数据类型来引用
Java™ 程序中的通用 SQL 数据类型,这些程序使用 JDBC API 连接到 GBase 8s 数据库。
下表显示了每个 JDBC API 数据类型映射的 GBase 8s 数据类型。
JDBC API 数据类型
GBase 8s 数据类型
BIGINT
INT8 、BIGINT 、BIGSERIAL
BINARY
BYTE
BIT 1
BOOLEAN
REF
不支持
CHAR
CHAR(n)
DATE
DATE
DECIMAL
DECIMAL
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 264
-
JDBC API 数据类型
GBase 8s 数据类型
DOUBLE
FLOAT
FLOAT
FLOAT2
INTEGER
INTEGER
LONGVARBINARY
BYTE 或 BLOB
LONGVARCHAR
TEXT 或 CLOB
NUMERIC
DECIMAL
NUMERIC
MONEY
REAL
SMALLFLOAT
SMALLINT
SMALLINT
TIME
DATETIME HOUR TO SECOND2
TIMESTAMP
DATETIME YEAR TO FRACTION(5)3
TINYINT
SMALLINT
VARBINARY
BYTE
VARCHAR
VARCHAR(m,r)
BOOLEAN
BOOLEAN
SMALLINT
SMALLINT
1 在 Java 1.4 中,java.sql.Types.BOOLEAN 映射到 BOOLEAN。
2 这个映射是 JDBC 兼容的。
通过将 IFX_SET_FLOAT_AS_SMFLOAT 环境变量设置为 1 ,
可以将 JDBC FLOAT 数据类型映射到 GBase 8sSMALLFLOAT 数据类型以便向后兼容。
3 GBase 8s DATETIME 类型非常严格,不可互换。有关更多信息,请参阅 字段长度和
DATETIME 数据。
在扩展类型和 Java 和 JDBC 类型之间映射数据类型
下表列出了 GBase 8s 中扩展的数据类型和对应 Java™ 和 JDBC 的类型之间的映射。
JDBC 类型
Java 对象类型
GBase 8s 类型
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 265
-
JDBC 类型
Java 对象类型
GBase 8s 类型
java.sql.Types.LONGVARCH
AR
java.sql.String
java.io.inputStream
LVARCHAR
IfxTypes.IFX_TYPE_LVAR
CHAR
java.sql.Types.JAVA_OBJE
CT
java.sql.SQLData
Opaque 类型
IfxTypes.IFX_TYPE_UDTF
IXED
IfxTypes.IFX_TYPE_UDTV
AR
java.sql.Types.LONGVARBI
NARY
java.sql.Types.BLOB
java.sql.Blob
java.io.inputStreambyte[]
BLOB
IfxTypes.IFX_TYPE_BLOB
java.sql.Types.LONGVARCH
AR
java.sql.Types.CLOB
java.sql.Clob
java.io.inputStream
java.lang.String
CLOB
IfxTypes.IFX_TYPE_CLOB
java.sql.Types.LONGVARBI
NARY
java.sql.Types.BLOB
java.io.inputStream
java.sql.Blob byte[]
BYTE
IfxTypes.IFX_TYPE_BYTE
java.sql.Types.LONGVARCH
AR
java.sql.Types.CLOB
java.io.InputStream
java.sql.Clob
java.sql.String
TEXT
IfxTypes.IFX_TYPE_TEXT
java.sql.Types.JAVA_OBJE
CT
java.sql.Types.STRUCT
java.sql.SQLData
java.sql.Struct
命名行
IfxTypes.IFX_TYPE_ROW
java.sql.Types.STRUCT
java.sql.Struct
未命名行
IfxTypes.IFX_TYPE_ROW
java.sql.Types.ARRAY
java.sql.Types.OTHER
java.sql.Array
java.util.LinkedList
java.util.HashSet
set, multiset
IfxTypes.IFX_TYPE_SET
IfxTypes.IFX_TYPE_MULT
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 266
-
JDBC 类型
Java 对象类型
GBase 8s 类型
java.util.TreeSet
ISET
java.sql.Types.ARRAY
java.sql.Types.OTHER
java.sql.Array
java.util.ArrayList java
.util.LinkedList
LIST
IfxTypes.IFX_TYPE_LIST
Java boolean 对象可以映射到 GBase 8s smallint 数据类型或 GBase 8s boolean 数据类型。
GBase 8s JDBC Driver 尝试根据列类型映射它。
但是,
在例如 PreparedStatement 主机变量的
情况中,GBase 8s JDBC Driver 不会存取列类型,因此,映射在一定程度上是受限制的。
有关数据类型映射的详细信息,请参阅PreparedStatement.setXXX() 扩展的数据类型映射。
C 不透明类型和 Java 之间的数据类型映射
要使用 Java™ 创建不透明类型,
您可以使用 UDT 和 UDR Manager 工具。
有关更多信息,
请参阅 与不透明数据类型一起使用。
所有的不透明类型都存储在 C 结构的数据库服务器表中,
该结构由不透明类型中定义的各
种 DataBlade API 类型组成。(有关更多信息,请参阅《GBase 8s DataBlade API 程序员指
南》。)
下表列出了 DataBlade API 类型与相应的 Java 类型的映射。
DataBlade API 类型
Java 类型
MI_LO_HANDLE
BLOB 或 CLOB
gl_wchar_t
String
mi_boolean
boolean
mi_char
String
mi_char1
String
mi_date
Date
mi_datetime
TimeStamp
mi_decimal
BigDecimal
mi_double_precision
double
mi_int1
byte
mi_int8
long
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 267
-
DataBlade API 类型
Java 类型
mi_integer
int
mi_interval
不支持
mi_money
BigDecimal
mi_numeric
BigDecimal
mi_real
float
mi_smallint
short
mi_string
String
mi_unsigned_char1
String
mi_unsigned_int8
long
mi_unsigned_integer
int
mi_unsigned_smallint short
mi_wchar
String
C 结构可能包含填充字节。
GBase 8s JDBC Driver 会自动跳过这些填充字节,
以确保下一个
数据成员正确对齐。因此,您的 Java™ 对象不必关心自身的对齐。