2016-03-22 54 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();