使用 JAVA 编程语言,我想打印到控制台,所有在 ORACLE 表中使用的数据类型为其等效的JAVA数据类型;你能帮我吗?
例如:
Create table Student (
STD_ID number (8) primary Key,
NAME varchar2 (15) not null,
AGE number (2),
AVERAGE number (2, 3)
);
运行程序后,输出类似如下:
-
整数
-
字符串
-
短
-
双
我通过以下代码到达 oracle 数据类型,但是将Number数据类型转换为Integer,Double,Short和其他数字数据类型;我有个问题 .
resultset.getMetaData.getColumnType(columnCount);
3 回答
根据有关数据类型及其Java映射的
Oracle
文档:NUMBER:
Understanding Type Maps:
这是默认行为,您可以在基础返回类型的
getObject
方法上找到它 . 对于NUMBER
的数据类型,返回类型为java.math.BigDecimal
.在下面引用的“摘要”页面上的示例中显示了了解数据库特定数据类型的Java返回类型的示例 . 我在此帖子上的回答中提供了类似的例子 .
Conclusion :
返回类型是特定于数据库驱动程如果您想为方便起见或出于任何其他原因强制转换它们,可以进行显式调用,例如
NUMBER
数据类型列上的getDouble( columnNumber )
. 您可能需要明确处理返回数字值的精度和比例部分 .Refer to :
Oracle's Built-in Data Types
Summary of getObject() and getOracleObject() Return Types
Valid SQL Datatype-Java Class Mappings
一旦你知道你有一个数字列,你可以用getPrecision和getScale来猜测实际的类型:
如果getScale()> 0:double
如果getPrecision()>某个值:short
如果getPrecision()介于某个值和其他一些值之间:整数
如果getPrecision()>其他一些值:long .
您可以调用
getColumnClassName
以获取任何数据库表列的数据类型的JAVA限定类匹配 .Example :
Output Example :类似于:
Refer to :
ResultSetMetaData - getColumnClassName( int columnNumber )
如果调用方法ResultSet.getObject从列中检索值,则返回其实例生成的Java类的完全限定名称 .