首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jdbc:从java.sql.Type代码中获取SQL Type Name

jdbc:从java.sql.Type代码中获取SQL Type Name
EN

Stack Overflow用户
提问于 2011-06-22 17:34:30
回答 7查看 44.5K关注 0票数 34

我有一个包含字段名和jdbc类型代码的数组。(这些int代码可以在

http://download.oracle.com/javase/1.4.2/docs/api/constant-values.html#java.sql.Types.BIT

我使用4级驱动程序。

我不知道如何向驱动程序请求相应的SQL (DDL)类型名称。它在jdbc和本地方言中都很有用。

我有过

(CustomerId,1) (CustomerName,-8)

我想要

(customerId,INT) (customerId,VARCHAR200)

在哪里可以找到对我有帮助的函数?我通过zxJDBC在jython中使用jdbc,所以我可以使用所有的java和python DB API2.0功能。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-06-22 17:57:20

您似乎使用了一些尚未发布的JDBC元数据方法。我相信您看到的是列的名称以及从中派生列类型的JDBC type constant。请查看java.sql API以了解有关如何获取更多元数据的更多信息。

票数 -1
EN

Stack Overflow用户

发布于 2013-03-06 13:36:01

为了明确回答“从java.sql.Type代码中获取SQL Type Name”,如果您使用的是可以进行反射的java版本,这里有一个小的实用程序方法,它可以做几乎相同的事情:

public Map<Integer, String> getAllJdbcTypeNames() {

    Map<Integer, String> result = new HashMap<Integer, String>();

    for (Field field : Types.class.getFields()) {
        result.put((Integer)field.get(null), field.getName());
    }

    return result;
}

import java.lang.reflect.Field;添加到导入声明中。准备就绪后,只需按如下方式使用它:

...
Map<Integer, String> jdbcMappings = getAllJdbcTypeNames();

String typeName = jdbcMappings.get(-5); // now that will return BIGINT
...
票数 40
EN

Stack Overflow用户

发布于 2015-05-26 03:19:59

Java8及更高版本:JDBCTypeSQLType

随着API的改进,从Java8和JDBC 4.2开始,我们有了JDBCTypeSQLType,本着与其他一些示例相同的精神,可以简单地使用以下内容:

String typeName = JDBCType.valueOf(-5).getName();

当然,为什么一开始就使用数值类型呢?养成一个习惯,从数字切换到JDBCType中定义的enum常量

String typeName = JDBCType.BIGINT.getName();

就是这样!

然而,对于在DDL中使用的东西来说,这可能还不够好。您可能需要实现特定于供应商的转换。例如,对于Oracle,您可能需要考虑将VARCHAR转换为VARCHAR2

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6437790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档