oracle数据库中的NUMBER(10,2)

时间:2018-11-08 07:31:47

标签: java oracle type-conversion

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

  • Float
  • float
  • double
  • Double
  • BigDecimal

但是这些东西在Java中没有映射。我需要做什么。 预先感谢。

2 个答案:

答案 0 :(得分:1)

使用ResultSet.getBigDecimal(int)来获取索引

ResultSet.getBigDecimal(String)以获取列名

JDBC Guide中,对于任何数值类型,也建议使用此方法

  

将JDBC类型映射为Java类型

     

NUMERIC java.math.BigDecimal

答案 1 :(得分:0)

您可以使用doubleBigDecimal

示例,假设表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)。