2016-09-22 4 views
0

SQLクエリを作成し、データを取得するためにテキストフィールドを使用しました。しかし、テキストフィールドが空の場合、すべてのデータが得られます。どうすればそれを止めることができますか? - 言い訳TextFieldsを使用したJava SQLのクエリ

String sql = "select * from boek where "; 
sql = addLike(sql, null, naam", txtNaam.getText()); 
sql = addLike(sql, "OR", auteur", txtAuteur.getText()); 
... 


String addLike(String sql, String op, String col, String arg) { 
if (arg != null && arg.length() > 0) { 
    return sql + " " + (op == null ? "" : op) + " " + col + " like '%" + arg + "%' " ; 
} 

構文の問題

String sql = "select * from boek where naam like '%" 
      + txtNaam.getText() + "%' or auteur like '%" 
      + txtAuteur.getText() + "%' or categorie like '%" 
      + txtCategorie.getText() + "%' or opleiding like '%" 
      + txtOpleiding.getText() + "%' not opleiding like '%" 
      + txtOpleiding.getText() + "%' "; 
+0

フィールドが空であることを許可しないでください。 –

+0

@Dan Bracuk私が本を検索する場合、私は著者の名前を知る必要はありません。だから私は別のテキストフィールドを空にすることができます。とにかく、おかげで。 – Atti

+0

あなたのユーザ入力は '% 'かもしれません。 DROP DATABASE ... 'として... –

答えて

0

私は値を持つテキストフィールドだけを照会し、空の残りは無視すると考えていますね。

私の提案は次のようになります。

1)あなたのプログラムからの入力が最初のものであるか決定するためにあなたのJavaのロジックを記述します。例: 著者、カテゴリは選択されたフィールドで、空ではありません。

2)選択された入力のみの検索を容易にする専用のSQLクエリを実行します。例: この場合は、作成者とカテゴリのみを使用するSELECT

したがって、そこにはいくつかのSQLクエリがあります。すべてを扱う人だけでなく、それは私の意見ではあまり混乱しないでしょう。希望しますそれを助ける:)

+0

Thanx @ DriLLFreAK100、私はあなたの答えを選びたいと思っていましたが、十分なポイントがありません。 – Atti

+0

@Atti心配する必要はありません。それは喜んで:) – DriLLFreAK100

0

方法について:ここに私のコードです。 Btwでは、SQLインジェクションを避けるために入力検証が必要な場合があります。

0

あなたがこの問題に近づく方法は、テキストフィールドが空であるかどうかをチェックするSQLクエリを送信する前です。すべてのデータが入力されている場合はクエリを送信し、そうでない場合はクエリを送信しないようにすることができます。ここで

作業をする必要がありますいくつかのコードの例です:

if(!txtNaam.getText().equals("") && !txtAuteur.getText().equals("") && !txtCategorie.getText().equals("") && !txtOpleiding.getText().equals("") && !txtOpleiding.getText().equals("")){ 

    String sql = "select * from boek where naam like '%" + txtNaam.getText() + "%' or auteur like '%" 
     + txtAuteur.getText() + "%' or categorie like '%" + txtCategorie.getText() + "%' or opleiding like '%" 
     + txtOpleiding.getText() + "%' not opleiding like '%" + txtOpleiding.getText() + "%' "; 

    //Execute query here 

} else { 

    //Code that will run if any values aren't available 

} 

は、この情報がお役に立てば幸い!

関連する問題