Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich bei MySQL PreparedStatements einen „Syntaxfehler in der Nähe von „?''?

Warum erhalte ich bei MySQL PreparedStatements einen „Syntaxfehler in der Nähe von „?''?

Patricia Arquette
Freigeben: 2024-12-11 12:46:15
Original
551 Leute haben es durchsucht

Why Am I Getting a

Ausnahme in der Nähe von „?“ Beim Ausführen von PreparedStatement in MySQL

In Java kann es beim Ausführen einer Abfrage mit PreparedStatement zu einer MySQLSyntaxErrorException mit der Fehlernummer 1064 kommen, die auf einen Syntaxfehler in der Nähe von „?“ hinweist. Dies kann passieren, obwohl die Abfrage in einem MySQL-Abfragebrowser mit ersetzten Werten funktioniert.

Bei näherer Betrachtung wird deutlich, dass MySQL das „?“ nicht interpretieren kann. Platzhalter in der SQL-Abfrage, da die Syntax ungültig ist. Dies liegt daran, dass PreparedStatement diese Platzhalter nicht ersetzt hat.

Der von Ihnen geteilte Codeausschnitt überschreibt fälschlicherweise die vorbereitete Abfrage mit der Originalversion. Um dies zu beheben, verwenden Sie PreparedStatement#executeQuery() anstelle von Statement#executeQuery(String):

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // Correct
Nach dem Login kopieren

Hinweis: Obwohl dies nicht mit dem aktuellen Problem zusammenhängt, kann Ihr Code das Problem nicht schließen Verbindung, Anweisung und ResultSet. Dieses Versäumnis kann zur Erschöpfung der Ressourcen und zum anschließenden Absturz der Anwendung führen. Implementieren Sie die richtige JDBC-Sprache, indem Sie diese Objekte in einem „finally“-Block schließen:

try (Connection conn = DriverManager.getConnection(...);
     PreparedStatement s = conn.prepareStatement(...);
     ResultSet rs = s.executeQuery()) {
     // Query execution code
} finally {
     if (rs != null) rs.close();
     if (s != null) s.close();
     if (conn != null) conn.close();
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei MySQL PreparedStatements einen „Syntaxfehler in der Nähe von „?''?. 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