gpt4 book ai didi

java - 无法使用executeQuery()

转载 作者:行者123 更新时间:2023-11-30 05:40:33 26 4
gpt4 key购买 nike

我正在制作一个应用程序来从数据库获取数据,但我无法在代码中使用 executeQuery 。这是我的代码的异常: java.lang.ClassCastException: org.apache.derby.client.am.ClientStatement 无法转换为 java.beans.Statement
在Database.main(Database.java:28)
问题出在哪里?

Connection MyconObj=null;
Statement MystateObj =null;
ResultSet MyresObj = null;


try {
MyconObj = DriverManager.getConnection("jdbc:derby://localhost:1527/students", "root", "root");
MystateObj = (Statement) MyconObj.createStatement();
String query = "SELECT * FROM ROOT.INFORMATION";
ResultSet MyresObj = MystateObj.executeQuery(query);


while(MyresObj.next()){
int id = MyresObj.getInt("id");
String name = MyresObj.getString("name");
String lastname = MyresObj.getString("lastname");
System.out.println(id + "" + name + "" + lastname);

}

} catch (Exception e) {
e.printStackTrace();
}

最佳答案

这是一个经典示例,说明同名的类如何导致困惑和运行时异常:

MystateObj = (Statement) MyconObj.createStatement();

但是,根据抛出的异常,实现所使用的导入尚未包含在 OP 代码中:

java.lang.ClassCastException: org.apache.derby.client.am.ClientStatement cannot be cast to java.beans.Statement

转换中使用的Statement类是java.beans.Statement,它可能已被导入。 MyconObj.createStatement() 返回的对象的类型为 org.apache.derby.client.am.ClientStatement,这会在运行时导致转换异常 -返回的对象是 java.sql.Statement 的扩展,如上面评论中所述(由 Mark Rotteveel )。

Statement 的导入是正确的,但来自错误的库。当使用允许自动导入生成的 IDE 时,很容易发生这种情况(当多个类与所使用的类名匹配时,会显示一个下拉列表以显示可能的导入。不幸的是,选择错误的导入是一种常见事件)。

关于java - 无法使用executeQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com