我有一个包含字段名和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功能。
发布于 2011-06-22 17:57:20
您似乎使用了一些尚未发布的JDBC元数据方法。我相信您看到的是列的名称以及从中派生列类型的JDBC type constant。请查看java.sql API以了解有关如何获取更多元数据的更多信息。
发布于 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
...
发布于 2015-05-26 03:19:59
Java8及更高版本:JDBCType
和SQLType
随着API的改进,从Java8和JDBC 4.2开始,我们有了JDBCType
和SQLType
,本着与其他一些示例相同的精神,可以简单地使用以下内容:
String typeName = JDBCType.valueOf(-5).getName();
当然,为什么一开始就使用数值类型呢?养成一个习惯,从数字切换到JDBCType
中定义的enum
常量
String typeName = JDBCType.BIGINT.getName();
就是这样!
然而,对于在DDL中使用的东西来说,这可能还不够好。您可能需要实现特定于供应商的转换。例如,对于Oracle,您可能需要考虑将VARCHAR
转换为VARCHAR2
。
https://stackoverflow.com/questions/6437790
复制相似问题