首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用executeQuery()

不能使用executeQuery()
EN

Stack Overflow用户
提问于 2019-04-18 19:16:50
回答 1查看 96关注 0票数 1

我正在制作一个从数据库获取数据的应用程序,但我不能在代码中使用executeQuery。这是我的代码的一个例外:java.lang.ClassCastException: org.apache.derby.client.am.ClientStatement cannot be cast to java.beans.Statement at Database.main(Database.java:28),问题出在哪里?

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-18 19:27:15

这是一个典型的例子,说明了同名的类如何导致混淆和运行时异常:

代码语言:javascript
复制
MystateObj = (Statement) MyconObj.createStatement();

但是,基于抛出的异常,实现使用的导入并未包含在操作代码中:

代码语言:javascript
复制
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时,这很容易发生(当多个类与所使用的类名匹配时,将显示一个可能导入的下拉列表。不幸的是,选择错误的导入是一个常见的事件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55744866

复制
相关文章

相似问题

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