Обновлено: проблема с выполнением SQL-запроса из Java

#java #mysql #database #jdbc #netbeans

#java #mysql #База данных #jdbc #netbeans

Вопрос:

Обновлено: в соответствии с предложениями я изменил все имена столбцов на строки и добавил подготовленные операторы-

 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/minor","root","alphabet")) {
            Statement st = conn.createStatement();
            PreparedStatement stmt= conn.prepareStatement("select * FROM ? where name=? ;");
            PreparedStatement stmt2= conn.prepareStatement("select * FROM ? where name=? ;");
            stmt.setString(1, day_1);
            stmt.setString(2, faculty1);
            stmt2.setString(1,day_1);
            stmt2.setString(2, faculty2);
            ResultSet rs=stmt.executeQuery();
            ResultSet rs1= stmt.executeQuery();
  

День и факультет извлекаются с экрана ввода, запросы отлично работают в mysql workbench, но ключевое слово ‘select’ пропадает, когда я пытаюсь запустить его с Java, см. Следующую ошибку-
Нет ключевого слова select
Faculty1, faculty2 извлекается из следующего-
извлечение
База данных выглядит следующим образом-
База данных

Комментарии:

1. Ваш запрос не имеет смысла, потому что вы пытаетесь выбрать из строкового литерала. Кроме того, он широко открыт для SQL-инъекций. Пожалуйста, ознакомьтесь с основами SQL, прежде чем продолжить, а также прочитайте о подготовленных операторах.

2. я изменил код и попытался добавить PreparedStatements. PreparedStatement stmt= conn.prepareStatement(«выбрать? откуда ? ;»); stmt.setString(1,ts); stmt.setString(2,day_1); Результирующий набор rs=stmt.ExecuteQuery(); но теперь я получаю ошибку, как указано — у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему серверу MySQLверсия для правильного синтаксиса для использования рядом с «MONDAY» в строке 1

Ответ №1:

  1. Я бы рекомендовал использовать PreparedStatement вместо Statement, тогда, по крайней мере, вы сможете связать свои переменные;
  2. Ваш запрос select from time_interval from day_selected неверен, я не думаю, что он будет выполняться где угодно, вам нужно иметь что-то между select и from, а не два from в одном операторе.

Комментарии:

1. я изменил код и попытался добавить PreparedStatements. PreparedStatement stmt= conn.prepareStatement(«выбрать? откуда ? ;»); stmt.setString(1,ts); stmt.setString(2,day_1); Результирующий набор rs=stmt.ExecuteQuery(); но теперь я получаю ошибку, как указано — у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему серверу MySQLверсия для правильного синтаксиса для использования рядом с «MONDAY» в строке 1

2. Как я уже упоминал, ваш запрос недействителен, вы даже можете увидеть его в журнале ошибок. Ваш запрос: select8:30-9:00 from 'MONDAY' считаете ли вы, что это допустимый запрос?

3. я понял, что вы говорили. Пожалуйста, проверьте обновленный вопрос. Проблема по-прежнему сохраняется.

4. Я не думаю, что возможно связать таблицу в подготовленном операторе.