JAVA JDBC mySql Подготовленный запрос на обновление

Я пытаюсь выполнить следующий код

package jdbclesson;

import java.sql.*;

public class PreparedQuery {

public static void main(String[] args) throws Exception
{
    String url              = "jdbc:mysql://localhost:3306/alien?useSSL=false";
    String uname            = "root";
    String pass             = "ma123";
    String query            = "UPDATE student SET username= ? where userid= ? ";
    PreparedStatement stmt  = null;


    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(url, uname, pass);
    stmt = con.prepareStatement(query);

    stmt.setString(1, "tina");
    stmt.setInt(2, 6);


    int rs = stmt.executeUpdate(query);

    System.out.println(rs);
    stmt.close();
    con.close();

}

}

но получаю следующие ошибки

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? where userid=?' at line 1

В моей базе данных есть только 1 ученик таблицы с 2 столбцами идентификатора пользователя и имени пользователя и 10 строк, чего мне не хватает

является ли идентификатор пользователя первичным ключом или есть какие-либо столбцы, для которых установлено автоматическое увеличение

briantaurostack7 08.02.2019 00:31

Убрать пробел между ? и двойные кавычки ("") userid= ? "; и попробуйте еще раз, пожалуйста.

Ros5292 08.02.2019 00:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 544
2

Ответы 2

Пытаться:

int rs = stmt.executeUpdate();

Вместо:

int rs = stmt.executeUpdate(query);

executeUpdate() запускает запрос подготовленного оператора, что вам и нужно. executeUpdate(query) запускает запрос, переданный методу. Вы получали ошибку, потому что вы передавали SQL с ошибками (содержит?).

Пожалуйста, попробуй:

"UPDATE student SET username= ? ” + ” where userid= ?"; 

int rs=stmt.executeUpdate();

Разве эти две строки кода уже не присутствуют в вопросе?

entpnerd 08.02.2019 08:29

Другие вопросы по теме