代码之家  ›  专栏  ›  技术社区  ›  Priyantha Lokesh Gupta

oracle数据库中的编号(10,2)[已关闭]

  •  0
  • Priyantha Lokesh Gupta  · 技术社区  · 6 年前

    oracle数据库内部变量数据类型为 NUMBER(10,2)

    • Float
    • float
    • double
    • Double
    • BigDecimal

    但是这些东西在java中没有映射。我需要做的。 提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Community CDub    4 年前

    ResultSet.getBigDecimal(int) 索引

    ResultSet.getBigDecimal(String)

    在中也建议这样做 JDBC Guide

    映射到Java类型的JDBC类型

    数值java.math.BigDecimal

        2
  •  0
  •   user85421    6 年前

    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() 获取一个对象。检查其类,您将看到驱动程序针对该类型返回的内容( 这里); getDouble() 双重的 大十进制 . (同样的道理 getInt

    注: rset.getString() 也会起作用,返回文本表示( String )这个数字是多少。