2011-07-06 6 views
5

私のコードには次の構文がありますが、JDBCでLIKE演算子を使用しようとしているときには機能しません。JDBCでMySQLのような演算子を使用するには?

ResultSet resultSet = statement.executeQuery("SELECT * 
               FROM drawings 
               WHERE name = '"+ DT +"'"); 

しかし、私はワイルドカードとして検索するLIKE演算子を使用したい場合は、私は「%」は有効な文字ではありませんというエラーを取得しておいてください。それはちょうど等しいときには、このように正常に動作します。 LIKE演算子を正しく使用する方法は?コメントから

+0

JSPページからクエリを実行しているとは言わないでください。 – Jacob

+0

あなたのLIKEクエリはどのように見えますか? –

+0

query =( "SELECT * FROM図面名WHERE 'LIKE'"%DT% "'"); – Sheeyla

答えて

15

query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'"); 

これはコンパイルされません。 DTが可変であると仮定すると、それはむしろ

query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'"; 

のようになります(シンタックスハイライトに注意を払う、%は、SQL文字列の一部である必要があります!)

しかし、連結ユーザーSQLクエリのような制御された文字列変数は、成功のためにドアを開けます。SQL injectionattacksLearnPreparedStatementの使い方を教えてください。

String sql = "SELECT * FROM drawings WHERE name LIKE ?"; 
// ... 
preparedStatement = connection.prepareStatement(sql); 
preparedStatement.setString(1, "%" + DT + "%"); 
resultSet = preparedStatement.executeQuery(); 
// ... 
+2

多くのありがとうBalus ...今私はJSPについてのあなたのコメントを理解した...私は確かにこれを考慮に入れ、私の質問に間違ったタグを使用しないように...多くのおかげで再びあなたの答えは2また、preparedStatementも実装しています。よろしく – Sheeyla

関連する問題