我正在制作一个从数据库获取数据的应用程序,但我不能在代码中使用executeQuery。这是我的代码的一个例外:java.lang.ClassCastException: org.apache.derby.client.am.ClientStatement cannot be cast to java.beans.Statement at 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();
}发布于 2019-04-18 19:27:15
这是一个典型的例子,说明了同名的类如何导致混淆和运行时异常:
MystateObj = (Statement) MyconObj.createStatement();但是,基于抛出的异常,实现使用的导入并未包含在操作代码中:
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时,这很容易发生(当多个类与所使用的类名匹配时,将显示一个可能导入的下拉列表。不幸的是,选择错误的导入是一个常见的事件)。
https://stackoverflow.com/questions/55744866
复制相似问题