Я пытаюсь выполнить следующий код
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 строк, чего мне не хватает
Убрать пробел между ? и двойные кавычки ("") userid= ? "; и попробуйте еще раз, пожалуйста.




Пытаться:
int rs = stmt.executeUpdate();
Вместо:
int rs = stmt.executeUpdate(query);
executeUpdate() запускает запрос подготовленного оператора, что вам и нужно. executeUpdate(query) запускает запрос, переданный методу. Вы получали ошибку, потому что вы передавали SQL с ошибками (содержит?).
Пожалуйста, попробуй:
"UPDATE student SET username= ? ” + ” where userid= ?";
int rs=stmt.executeUpdate();
Разве эти две строки кода уже не присутствуют в вопросе?
является ли идентификатор пользователя первичным ключом или есть какие-либо столбцы, для которых установлено автоматическое увеличение