名前、電子メールなどの個人情報が入力され、「送信」ボタンを押すことでSQLiteデータベースに格納される基本的なAndroidアプリケーションを作成していますこれは完全に機能します)。 1つのフィールドが入力されたときにデータベース内の対応する人物を検索する検索ボタンがあります(たとえば、フィールド名には文字列「harry」が与えられ、他のフィールドにはnull値が格納されます)。これは私のDatabaseHelperクラスに対応するコードです:引数がnullの場合、RawQueryは機能しません
public Person getPerson(String naam, String adres, String email, String geslacht,
String leeftijd, String geboortedatum){
Log.i("Main activity","Person to find: "+naam);
SQLiteDatabase db= this.getReadableDatabase();
Cursor curs=db.rawQuery("SELECT name FROM personen WHERE (name = ?) OR (adress = ?) "
+ "OR (email = ?) OR (gender = ?) OR (age = ?) OR (birthday = ?)",
new String[]{naam, adres, email, geslacht, leeftijd, geboortedatum});
Log.i("Main activity", "Query works");
すべての引数[]フィールドに値が与えられますが、与えているとき、私は、エラーがスローされた場所を確認するためにログを使用してrawQueryが動作しないことがわかりました1つのフィールド(電子メールなど)にNULL値が含まれている場合のエラー。これはなぜ私はANDステートメントの代わりにORステートメントを使用する必要がありますか?そうでない場合は、アプリですべてのフィールドが入力されていない場合はどうすればいいですか?あなたの刺し傷は、それがない場合は、ダミーの値によってそれを置き換える、初期化されている場合
new String[]{naam == null? "''":naam, etc}
チェック:
なぜ2つの引用符を含む文字列ですか? –
空文字列を入力すると、SQLが機能しないので、プレースホルダに何か文字列を入れなければなりません。WHERE(name =)はエラーをスローします –
パラメータはテキストで置き換えられません。それらはSQL式の値として終了します。 –