2011-07-06 16 views
5

Kodumda aşağıdaki sözdizim var, ancak JDBC'de LIKE işlecini kullanmaya çalıştığımda çalışmıyor. Sadece eşit olduğu zaman, bu şekilde çalışıyor:JDBC'de MySQL benzeri işleç nasıl kullanılır?

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

Ama joker, ben "%" geçerli bir karakter olmadığını söyleyerek hata almaya devam olarak aramak için LIKE operatörü kullanmak istiyorsanız . LIKE operatörünü nasıl doğru kullanabilirim? sözlerinden

+0

Lütfen bana JSP sayfanızdan sorgular yürüttüğünü söyleme. – Jacob

+0

LIKE sorgunuz neye benziyor? –

+0

query = ("SELECT * FROM adlarından GİBİ" "% DT%" '"); – Sheeyla

cevap

15

:

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

Bu derleme değil. DT değişken olduğunu varsayarsak, o zaman oldukça

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

gibi görünmelidir (dizim dikkat, % SQL dizesi bir parçası olmak zorunda!)

Ancak birleştirerek kullanıcı gibi bir SQL sorgusunda kontrol edilen dize değişkenleri, attacks için geniş kapılarını açmaktadır. LearnPreparedStatement nasıl kullanılır ve bunun yerine kullanın.

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

Çok teşekkürler Balus ... şimdi JSP hakkındaki yorumunuzu anladım ... Kesinlikle bunu hesaba katıp sorularımın yanlış etiketlerini kullanmaktan kaçınmak istiyorum ... çok teşekkürler, cevabınız 2 için bir problemi çözdü günler ve ben de hazırladık. Saygılarımızla – Sheeyla