Samding 发表于 2020-5-15 17:31

java BigDecimal转int类型的问题

本帖最后由 Samding 于 2020-5-15 20:42 编辑



rs.getObject(3)转成整型要在前面加java.math.BigDecimal是什么意思,不加会报错,
rs.getObject(3)不本来就是BigDecimal类型的吗


完整代码:
package com.rl.jdbc;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCQuery{
      public static void main(String[] args) {
                String driverClass = "oracle.jdbc.OracleDriver";
                String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
                String username = "scott";
                String password = "samding";
                Connection conn = null;
                Statement stmt = null;
                String sql = "select * from person";
                ResultSet rs = null;
                try {
                        Class.forName(driverClass);
                        conn = DriverManager.getConnection(url, username, password);
                        stmt = conn.createStatement();
                        rs = stmt.executeQuery(sql);
                        while(rs.next()) {
                              Object id = rs.getObject("id");
                              Object pname = rs.getObject(2);
                              Object gender = ((java.math.BigDecimal) rs.getObject(3)).intValue()==1?"男":"女";
                              System.out.println(rs.getObject(3).getClass());
                              System.out.println("编号:"+id+"   姓名:"+pname+"      性别:"+gender);
                        }
                        
                } catch (Exception e) {
                        e.printStackTrace();
                }finally {
                        try {
                              if(stmt != null) {
                                        stmt.close( );                                       
                              }
                              if(conn != null) {
                                        conn.close();
                              }
                        } catch (SQLException e) {
                              e.printStackTrace();
                        }
                }
      }
}
person表

s947267355 发表于 2020-5-15 17:59

本帖最后由 s947267355 于 2020-5-15 18:03 编辑

代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal

Samding 发表于 2020-5-15 18:12

本帖最后由 Samding 于 2020-5-15 18:32 编辑

s947267355 发表于 2020-5-15 17:59
代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal
第二行 getClass()看的不是类型吗,怎么确认是什么类型呢

Samding 发表于 2020-5-15 18:19

s947267355 发表于 2020-5-15 17:59
代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal

加了,完整代码

diaoff 发表于 2020-5-15 18:20

Object 没有intValue方法当然要强转啦,
这没毛病啊

不苦小和尚 发表于 2020-5-15 19:49

不加的话,调用的math是其他包的

Hitman047 发表于 2020-5-15 19:58

很久没用过jdbc了, 楼主大一吧?
rs.getInt(int index); // 这是转换成int类型
你rs.getObject(3)这样返回的是object类型,你可以点进去看看源码返回类型,不是说数据库是啥类型就是啥类型,请理解一下这个方法名字。
那你object类型肯定要加BigDecimal强转,不然不知道是什么类型数据。
你如果只是想要int类型,直接getInt就行了,java帮你转好了。
页: [1]
查看完整版本: java BigDecimal转int类型的问题