首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将这个BigInteger问题解决为“java.lang.Long”问题?

问如何将这个BigInteger问题解决为“java.lang.Long”问题?
EN

Stack Overflow用户
提问于 2019-01-05 18:44:25
回答 1查看 1.1K关注 0票数 0
代码语言:javascript
复制
import java.sql.*;

class MysqlCon {

    public static void main(String args[]) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/banco", "matheus", "123456");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from usuario");
            while (rs.next()) {
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));
            }
            con.close();
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println(e);
        }
    }
}

此代码正在引发一个错误:

java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger不能转换为java.lang.Long

我还在工作台上有一个包含列的表:

代码语言:javascript
复制
id (int), name (varchar), age (varchar).

有什么帮助吗?

使用'e.printStackTrace()':

代码语言:javascript
复制
run:
java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1062)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3556)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at MysqlCon.main(MysqlCon.java:10)
Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
    at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1007)
    ... 15 more
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
EN

回答 1

Stack Overflow用户

发布于 2019-01-05 21:33:59

当列类型是整数类型时,JDBC驱动程序通常返回BigInteger。

试一试:

代码语言:javascript
复制
rs.getObject(1)

并让java处理到字符串的转换。

如果您真的希望将值作为long

代码语言:javascript
复制
long id = ((BigInteger)rs.getObject(1)).longValue();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54055105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档