简单程序抛出ClassCastException:java.math.BigInteger不能转换为java.lang.Long
我正在做一个简单的程序来连接MySQL数据库和Java,但是这个程序抛出了ClassCastException错误 这个问题说MySQL中的Unsigned Bigint相当于Java中的long 以下是java部分:简单程序抛出ClassCastException:java.math.BigInteger不能转换为java.lang.Long,java,mysql,jdbc,Java,Mysql,Jdbc,我正在做一个简单的程序来连接MySQL数据库和Java,但是这个程序抛出了ClassCastException错误 这个问题说MySQL中的Unsigned Bigint相当于Java中的long 以下是java部分: public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO code application logic here Class.forN
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO code application logic here
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql:///check1","uname","pwd");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from t1");
while(rs.next()){
System.out.println(rs.getObject(1)+ " "+ rs.getObject(2));
}
rs.close();
st.close();
con.close();
}
我还包括我创建的表的模式
mysql> desc t1;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| rollno | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(40) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+
2 rows in set (0.39 sec)
试着这样做
Class.forName("com.mysql.jdbc.Driver").newInstance();
你检查过这个了吗?抛出异常的代码在哪里?请发布完整的异常StackTraceit。在java中,您必须获得它的长值。但是stacktrace仍然有助于确认我真的很抱歉我忘了发布完整的stacktrace我完全忘了。还有,@LukeWoodward谢谢,你的链接帮了忙。问题是我使用的JDBC连接器。使用最新版本解决了这个问题。谢谢你的帮助。这完全不必要,也解决不了问题。15多年前,MySQL Connector/J的前身有一个错误版本需要注册,因为他们将驱动程序注册放在实例初始值设定项中,而不是静态初始值设定项中。假设OP使用的是符合JDBC 4的驱动程序,那么在这种情况下甚至不需要使用Class.forName本身,并且已经10多年没有使用过了。如果驱动程序没有正确加载,OP将收到一个SQLException,其中没有合适的驱动程序异常消息。