Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java oracle数据库中的编号(10,2)_Java_Oracle_Type Conversion - Fatal编程技术网

Java oracle数据库中的编号(10,2)

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

oracle数据库内部变量数据类型为
NUMBER(10,2)
。所以我需要在java代码中获取这个值。我尝试了不同的方法:

  • Float
  • float
  • double
  • Double
  • BigDecimal
但是这些东西在java中没有映射。我需要做的。 提前感谢。

用于按索引获取

或按列名获取

对于任何数字类型,也建议使用此选项

映射到Java类型的JDBC类型

数值java.math.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.四舍五入);顺便说一句,上面的代码是一个(嗯,几乎是最小的,我不想包括密码)