由于每个数据库供应商支持的 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™ 对象不必关心自身的对齐。