Heim > Java > javaLernprogramm > MySQL PreparedStatement-Syntaxfehler: Warum schlägt „executeQuery()' mit „?'-Platzhaltern fehl?

MySQL PreparedStatement-Syntaxfehler: Warum schlägt „executeQuery()' mit „?'-Platzhaltern fehl?

Susan Sarandon
Freigeben: 2024-12-06 07:30:11
Original
1029 Leute haben es durchsucht

MySQL PreparedStatement Syntax Error: Why is `executeQuery()` Failing with `?` Placeholders?

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage