相关疑难解决方法(0)

为什么OJDBC 7不将CHAR数据类型映射到Java String?

OJDBC的工作之一是将Oracle数据类型映射到Java类型.

但是,我们注意到,如果我们提供CHAR数据类型,则不会映射到java.lang.String.显示此行为的版本是:OJDBC7 v12.1.0.2OJDBC6 v12.1.0.1.旧版本确实将CHAR数据类型映射到:java.lang.String.

在深入挖掘时,我们发现有一个类:StructMetaDataoracle.jdbc.driverOJDBC 的包中实现Oracle数据类型到Java类型映射.其中有一个方法:'getColumnClassName(int arg0)'值得关注.我们注意到,对于OJDBC v7,映射到的案例java.lang.String如下:

    int arg1 = this.getColumnType(arg0);
    switch (arg1) {
    case -104:
        return "oracle.sql.INTERVALDS";
    case -103:
        return "oracle.sql.INTERVALYM";
    case -102:
        return "oracle.sql.TIMESTAMPLTZ";
    case -101:
        return "oracle.sql.TIMESTAMPTZ";
    case -15:
    case -9:
    case 12:
        return "java.lang.String";
     ...
Run Code Online (Sandbox Code Playgroud)

但是,在较旧的OJDBC实现中,它看起来像这样:

    int arg1 = this.getColumnType(arg0);
    switch (arg1) {
    case -104:
        return "oracle.sql.INTERVALDS";
    case -103:
        return "oracle.sql.INTERVALYM";
    case -102:
        return "oracle.sql.TIMESTAMPLTZ";
    case -101: …
Run Code Online (Sandbox Code Playgroud)

java oracle11g ojdbc

5
推荐指数
1
解决办法
793
查看次数

标签 统计

java ×1

ojdbc ×1

oracle11g ×1