2016-03-22 56 views
0

我得到異常下面如何查詢在Java JDBC字符串

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 '?http://www.andhrabhoomi.net/' at line 1 

我想查一下我的數據庫中是否存在串

我的代碼:

   sql = "SELECT url FROM data where url = ?"+ "string"; 
       ResultSet rs = statement.executeQuery(sql); 
       System.out.println(rs); 
+1

上導致'sql'變得'選擇URL FROM數據,其中URL = string',這是無效的(「?string」不是SQL語法的一部分,也不是文字) –

+0

您是使用Statement還是PreparedStatement?請通過: http://www.tutorialspoint.com/javaexamples/jdbc_prepared_statement.htm – Suyash

+0

也如果你這樣做是壞的方式上面,字符串需要引用。 –

回答

2

由於您確實有?參數標記,因此您會嘗試使用PreparedStatement,因爲您應該全都假設"string"是sanitiz編輯?的實際值的示例。

這是一個PreparedStatement應該怎麼做?

String sql = "SELECT url FROM data where url = ?"; 
try (PreparedStatement stmt = conn.prepareStatement(sql)) { 
    stmt.setString(1, "string"); 
    try (ResultSet rs = stmt.executeQuery()) { 
     while (rs.next()) { 
      System.out.println(rs.getString("url")); 
     } 
    } 
} 
+0

仍然會出現相同的錯誤 – Labeo

+0

我的代碼: String url1 =「asssa」; sql =「選擇URL從數據其中url =?」; \t \t PreparedStatement stmt = connection.prepareStatement(sql); \t \t stmt.setString(1,url1); \t \t ResultSet rs = stmt.executeQuery(sql); \t \t \t 而\t(rs.next()){ \t \t的System.out.println(rs.getString( 「URL」)); \t \t} – Labeo

+0

從'executeQuery()'調用中刪除'sql'。 – Andreas

0

應用此您try塊

ps = conn.prepareStatement("SELECT url FROM data WHERE url = '?' + string"); 
ps.setString(1, THE VARIABLE ON WHERE YOU ARE GETTING THE VALUE OF URL); 
rs = ps.executeQuery();