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 18:03 编辑
代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal 本帖最后由 Samding 于 2020-5-15 18:32 编辑
s947267355 发表于 2020-5-15 17:59
代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal
第二行 getClass()看的不是类型吗,怎么确认是什么类型呢 s947267355 发表于 2020-5-15 17:59
代码能贴多点?从rs.getObject(3)的方法名上看来返回的应该是Object的类型,而不是BigDecimal
加了,完整代码 Object 没有intValue方法当然要强转啦,
这没毛病啊 不加的话,调用的math是其他包的 很久没用过jdbc了, 楼主大一吧?
rs.getInt(int index); // 这是转换成int类型
你rs.getObject(3)这样返回的是object类型,你可以点进去看看源码返回类型,不是说数据库是啥类型就是啥类型,请理解一下这个方法名字。
那你object类型肯定要加BigDecimal强转,不然不知道是什么类型数据。
你如果只是想要int类型,直接getInt就行了,java帮你转好了。
页:
[1]