PreparedStatement

PreparedStatement
NW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Witam

Próbuję w miejsce placeholderów (czyli '?') podstawić string, który podał nam uzytowkownik.
Błąd, który cały czas wyskakuje to :
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 '?,?)' at line 1
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

Probowałem róznych metod, wstawiania ? w pojedynczy cudzysłow, podwójny itp., ale bez skutku.

Kopiuj

       System.out.println("First name:");
        String first = mReader.readLine();
        System.out.println("Last name:");
        String last = mReader.readLine();

        String insert = "INSERT INTO persons (last, first) VALUES (?,?)";
        PreparedStatement preparedStatement = conn.prepareStatement(insert);
        preparedStatement.setString(1, first);
        preparedStatement.setString(2, last);
        preparedStatement.executeUpdate(insert);
Burdzi0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Futurama
  • Postów: 887
0

Dlaczego czyste JDBC? Zobacz, że jak user trochę poczyta o SQL injection to jesteś bez bazy ;)

  • Rejestracja: dni
  • Ostatnio: dni
1
Burdzi0 napisał(a):

Dlaczego czyste JDBC? Zobacz, że jak user trochę poczyta o SQL injection to jesteś bez bazy ;)

Przecież to prepared statement i zmienne są wiązane to jaki SQL injecton?

A7
  • Rejestracja: dni
  • Ostatnio: dni
1

Zmień ostatnią linijkę z:
preparedStatement.executeUpdate(insert);

na:
preparedStatement.executeUpdate();

NW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0
Arctor75 napisał(a):

Zmień ostatnią linijkę z:
preparedStatement.executeUpdate(insert);

na:
preparedStatement.executeUpdate();

Mistrz! Dzieki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.