Java oracle数据库中的编号(10,2)
oracle数据库内部变量数据类型为Java oracle数据库中的编号(10,2),java,oracle,type-conversion,Java,Oracle,Type Conversion,oracle数据库内部变量数据类型为NUMBER(10,2)。所以我需要在java代码中获取这个值。我尝试了不同的方法: Float float double Double BigDecimal 但是这些东西在java中没有映射。我需要做的。 提前感谢。用于按索引获取 或按列名获取 对于任何数字类型,也建议使用此选项 映射到Java类型的JDBC类型 数值java.math.BigDecimal 您可以使用double或BigDecimal 例如,假设表ATEST,列N定义为创建表ATEST
NUMBER(10,2)
。所以我需要在java代码中获取这个值。我尝试了不同的方法:
Float
float
double
Double
BigDecimal
您可以使用
double
或BigDecimal
例如,假设表ATEST
,列N
定义为创建表ATEST(N编号(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
here)getDouble()
只是将其转换为double
——这可能会导致某些精度损失,因此最好使用BigDecimal
。(对于getInt
,情况相同)
注意:
rset.getString()
也可以,返回数字的文本表示形式(String
)。请尝试BigDecimal设置比例。BigDecimal db=新的BigDecimal(d).设置刻度(10,BigDecimal.四舍五入到一半)@RaheelaAslam什么是dd是来自数据库的实际值。@RaheelaAslam当Oracle数据库中的数据类型的刻度为2时,为什么要将刻度设置为10?你为什么要设定它?从数据库中读取时它已经是2,在数据库中插入/更新时它将为您四舍五入(如果需要)。BigDecimal db=新的BigDecimal(d).设置刻度(2,BigDecimal.四舍五入);顺便说一句,上面的代码是一个(嗯,几乎是最小的,我不想包括密码)