Не может использовать executeQuery () - PullRequest
1 голос
/ 18 апреля 2019

Я подаю заявку на получение данных из базы данных, но я не могу использовать 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();
}

1 Ответ

1 голос
/ 18 апреля 2019

Это классический пример того, как классы с одинаковыми именами могут вызывать путаницу и исключения во время выполнения:

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, которые разрешают автоматическую генерацию импорта (когда более чем одному классу соответствует имя используемого класса, для возможных импортов отображается раскрывающийся список. Выбор неправильного импорта, к сожалению, является обычным явлением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...