Индекс параметра вне диапазона (1> количество параметров, которое равно 0). как это решить? - PullRequest
0 голосов
/ 15 января 2019

я не могу вставить свои данные из Java в базу данных

Это SQL и заявление

//query
String username = txtUsername.getText();
String password = txtPassword.getText();
String namabisnis = txtBisnis.getText();

String sql = "insert into user (username,password,namabisnis)  values('?','?','?')";

try {
    preparedStatement = con.prepareStatement(sql);
    preparedStatement.setString(1, username);
    preparedStatement.setString(2, password);
    preparedStatement.setString(3, namabisnis);

    int masuk = preparedStatement.executeUpdate(sql);

    lblerror.setTextFill(Color.TOMATO);
    lblerror.setText("Akun Anda Sudah Didaftarkan, Silahkan Login");
} catch (SQLException ex) {
    System.err.println(ex.getMessage());
    //return "Exception";
    lblerror.setTextFill(Color.TOMATO);
    lblerror.setText("Error Saat Mendaftarkan Akun");
}

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

Индекс параметра вне диапазона (1> количество параметров, равное 0).

Как это вызвано и как я могу это решить?

1 Ответ

0 голосов
/ 15 января 2019

Удалите одинарные кавычки из вашего запроса ('?'?):

String sql = "insert into user (username,password,namabisnis)  values(?,?,?)";

Я снова получаю следующую ошибку: В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса для использования рядом с '?,?,?)' в строке 1

Это потому, что вам нужно вызвать executeUpdate() без параметров. Передача запроса заставит его выполняться без привязок (кавычки не будут заменены).

Вместо этого вызывайте его без параметров:

int masuk = preparedStatement.executeUpdate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...