Heim >Java >javaLernprogramm >MySQL PreparedStatement-Syntaxfehler: Warum schlägt „executeQuery()' mit „?'-Platzhaltern fehl?
MySQL-Syntaxfehler: Verständnis der PreparedStatement-Syntax
Ihr Java-Code, der ein PreparedStatement zum Ausführen einer Abfrage verwendet, stößt auf einen MySQL-Syntaxfehler (error Nummer 1064). Dieser Fehler wird normalerweise ausgelöst, wenn ein Problem mit der SQL-Syntax selbst vorliegt.
Identifizieren der Fehlerquelle:
Der bereitgestellte Code zeigt, dass Sie es versuchen Führen Sie eine Abfrage aus, die Platzhalter enthält, die durch „?“ dargestellt werden. MySQL interpretiert das „?“ nicht. Zeichen als Platzhalter und behandelt sie stattdessen als Teil der SQL-Anweisung.
Lösung: Verwendung der argumentlessexecuteQuery()-Methode
Um das Problem zu beheben, müssen Sie verwenden Die MethodeexecuteQuery() der vorbereiteten Anweisung ohne Angabe der Abfragezeichenfolge als Argument.
PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(); // Correct syntax
Durch Weglassen der Abfragezeichenfolge in Mit der Funktion „executeQuery()“ erlauben Sie der vorbereiteten Anweisung, die zuvor definierte Abfrage mit den bereitgestellten Parameterwerten auszuführen.
Achtung: Ressourcenverlust
Deinem Code fehlt es derzeit an den richtigen Abwicklung der Ressourcenzuweisung und -freigabe. Es wird empfohlen, die JDBC-Sprache zu verwenden, bei der alle erfassten Ressourcen (Verbindung, Anweisung, ResultSet) in einem endgültigen Block des try-Blocks geschlossen werden. Andernfalls könnte Ihre Anwendung im Laufe der Zeit die Ressourcen der Datenbank erschöpfen, was zu Instabilität führt.
Das obige ist der detaillierte Inhalt vonMySQL PreparedStatement-Syntaxfehler: Warum schlägt „executeQuery()' mit „?'-Platzhaltern fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!