私はあなたの名前、電子メール、アドレスなどの人の情報を記入することができますアンドロイドのためのEclipseのアプリを作った。このアプリで私は検索ボタンを含める必要があります1つまたは複数の情報が分かっている場合にデータベースに格納されます。例えば。データベースに保存されている人のメールアドレスしか覚えていないときは、一致するメールを検索してその人を見つけることができる必要があります。これは私がそうするために使用されるコードです:sqliteデータベースのrawqueryが私に間違った人物を与えているのはなぜですか?
public Person getPerson(String naam, String adres, String email, String geslacht,
String leeftijd, String geboortedatum){
SQLiteDatabase db= this.getReadableDatabase();
Cursor curs=db.rawQuery("SELECT * FROM personen WHERE name = ? OR adress = ? "
+ "OR email = ? OR gender = ? OR age = ? OR birthday = ?",
new String[]{naam==null?"'":naam, adres==null?"'":adres,
email==null?"'":email, geslacht==null?"'":geslacht,
leeftijd==null?"'":leeftijd, geboortedatum==null?"'":geboortedatum});
if(curs!=null)
curs.moveToFirst();
それはNULL値が含まれていたとき、私は[]引数を変更した理由は、そうでない場合rawQueryが動作しないことです。しかし、このコードは、私が探していた人物を返しませんが、データベースの最初の人物を返します。 人のためのクエリー検索を行うことで、コードを簡素化し、それが実際にその名前を持つ人物を返すん名前のみ:最初のrawQueryと間違っていると、なぜそれは私が「人を返さない
Cursor curs=db.rawQuery("SELECT * FROM personen WHERE name = ?", new String[]{naam});
if(curs!=null)
curs.moveToFirst();
何探していますが、単にデータベースの最初の人物ですが、2番目のrawQueryは適切な人物を返しますか?
'または'を使用すると、条件の1つが検証された最初の行が返されますが、 'curs.moveToFirst();'最初の行だけを返しますので、しばらくしておいてください –
あなたは共通のプロパティを持つ人物を持っています。あなたのカーソルのサイズを見てください。 – njzk2
curs.moveToFirst();あなたのコメントのために、 –