内部oracle数据库变量的数据类型为NUMBER(10,2)
。所以我需要在我的Java代码中获取此值。我尝试了不同的方法:
Float
float
double
Double
BigDecimal
但是这些东西在Java中没有映射。我需要做什么。 预先感谢。
答案 0 :(得分:1)
使用ResultSet.getBigDecimal(int)来获取索引
或ResultSet.getBigDecimal(String)以获取列名
在JDBC Guide中,对于任何数值类型,也建议使用此方法
将JDBC类型映射为Java类型
NUMERIC java.math.BigDecimal
答案 1 :(得分:0)
您可以使用double
或BigDecimal
。
示例,假设表ATEST
的列N
被定义为CREATE TABLE ATEST ( N NUMBER(10,2) )
:
import java.math.BigDecimal;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class OraNum {
private static String url = "jdbc:oracle:thin:@localhost:1523:sid";
private static String user = "User";
public static void main(String[] args) throws Exception {
var pwd = JOptionPane.showInputDialog("Password: ");
if (pwd == null) {
return;
}
try (
var conn = DriverManager.getConnection(url, user, pwd);
var stmt = conn.prepareStatement("select N from ATEST");
var rset = stmt.executeQuery();
) {
while (rset.next()) {
double d = rset.getDouble(1);
BigDecimal big = rset.getBigDecimal(1);
System.out.printf("double: %s, BigDecimal: %s%n", d, big);
}
}
}
}
您还可以使用rset.getObject()
获取对象。检查其类,您将看到该类型的驱动程序返回什么(此处为BigDecimal
); getDouble()
只是将其转换为double
-这可能会导致精度损失,因此最好使用BigDecimal
。 (getInt
也是如此)
注意:rset.getString()
也可以,返回数字的文字表示形式(String
)。