#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, см. Следующую ошибку-
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:
- Я бы рекомендовал использовать PreparedStatement вместо Statement, тогда, по крайней мере, вы сможете связать свои переменные;
- Ваш запрос
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. Я не думаю, что возможно связать таблицу в подготовленном операторе.