吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1638|回复: 6
收起左侧

[已解决] java BigDecimal转int类型的问题

 关闭 [复制链接]
Samding 发表于 2020-5-15 17:31
本帖最后由 Samding 于 2020-5-15 20:42 编辑

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


完整代码:
[Java] 纯文本查看 复制代码
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表
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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帮你转好了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 17:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表