2016-08-24 1 views
1

Ich versuche, die Java-MySQL-Bibliothek zu verwenden, aber ich habe Probleme mit einer vorbereiteten Anweisung. Ich bin mir nicht sicher, was ich vermisse. Unten ist, was ich mit dem MYSQL-Fehler habe, der versucht, die vorbereitete Aussage zu benutzen.Java MYSQL Prepared Statement Error: Überprüfen Sie die Syntax für die Verwendung in der Nähe von '?' in Zeile 1

String query = "SELECT id, clicks FROM mailer.links WHERE campaign_id=?"; 
    try { 

     preparedStatement = connect.prepareStatement(query); 
     preparedStatement.setInt(1, campaignId); 
     preparedStatement.execute(); 
     Statement st = connect.createStatement(); 


     // execute the query, and get a java resultset 
     ResultSet rs = st.executeQuery(query); 

ich die folgende Störung erhalte:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
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 

Es funktioniert, wenn ich "campaign_id =" do + campaignId, sondern ist eine SQL-Injection warten geschehen.

Antwort

2

Versuchen Sie, diese

ResultSet rs = preparedStatement.executeQuery();

+0

Das funktioniert. Danke. – applecrusher

0

PreparedStatement Methode executeQuery() selbst ein ResultSet-Objekt

So weisen Sie diese zu einem ResultSet Objekt zurückgibt

ResultSet rs = preparedStatement.executeQuery(); 

Fehler:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
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 

Und dieser Fehler tritt auf, weil Wenn

ResultSet rs = st.executeQuery(query); 

Diese Anweisung ausführt, kann es keinen Wert in ? Operator finden. so bleibt Ihre Abfrage dieser "SELECT id, clicks FROM mailer.links WHERE campaign_id=?"; und das wirft eine MySQL Syntax Exception.

Verwandte Themen