Java 参数索引超出范围(1>;参数数,即0)。如何解决?

Java 参数索引超出范围(1>;参数数,即0)。如何解决?,java,netbeans,Java,Netbeans,我无法将数据从java插入数据库 这是sql and语句 //query String username = txtUsername.getText(); String password = txtPassword.getText(); String namabisnis = txtBisnis.getText(); String sql = "insert into user (username,password,namabisnis) values('?','?','?')"; try

我无法将数据从java插入数据库

这是sql and语句

//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)


这是如何导致的,我如何解决它?

从查询中删除单引号(
?”
⇒ <代码>?):


我再次遇到以下错误:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“?,?,?)”附近使用的正确语法

这是因为您需要在不带参数的情况下调用
executeUpdate()
。传入查询将使其在没有绑定的情况下执行(引号不会被替换)

改为不带参数调用它:

int masuk = preparedStatement.executeUpdate();

从查询中删除单引号(
?”
⇒ <代码>?):


我再次遇到以下错误:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“?,?,?)”附近使用的正确语法

这是因为您需要在不带参数的情况下调用
executeUpdate()
。传入查询将使其在没有绑定的情况下执行(引号不会被替换)

改为不带参数调用它:

int masuk = preparedStatement.executeUpdate();

我再次遇到以下错误:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“?,?,?)”附近使用的正确语法。如果您的SQL语法有错误,则再次出现以下错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“?,?,?)”附近使用的正确语法