2016-03-22 12 views
0

JavaのJDBCで文字列を照会するために、私は、文字列がは、どのように私は例外の下に取得しています

MY CODE私のデータベースに存在しているかいないかどうかを確認しようとしています

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文法の一部でもリテラルでもありません) –

+0

StatementまたはPreparedStatementを使用していますか? http://www.tutorialspoint.com/javaexamples/jdbc_prepared_statement.htm – Suyash

+0

また、上記の悪い方法を行っていた場合は、文字列を引用する必要があります。 –

答えて

2

パラメータマーカーが?であるため、PreparedStatementを使用しようとしていたようですが、"string"はサニティーズ?は、実際に使用される値の例です。

これは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 = "SELECT url FROM data where 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

はsql`が `データのurl = STRING`からURLを選択となり、`その結果、あなたの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(); 
関連する問題