我在android中的eclipse中創建了一個應用程序,您可以在其中填寫個人信息,如姓名,電子郵件,地址等。在此應用程序中,我需要包含一個搜索按鈕,它將搜索保存在數據庫,當一個或多個信息已知時。例如。當我只記得保存在數據庫中的人的電子郵件地址時,我需要通過搜索匹配的電子郵件來找到該人。這是我用這樣的代碼:爲什麼我的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();
我改變了ARGS []當它包含一個空值,否則該rawQuery將無法正常工作的原因。但是,此代碼不會返回我正在搜索的人員,但它只是返回數據庫中的第一個人。 當通過使一個人的查詢搜索簡化了代碼只命名它實際上與該名返回的人:
Cursor curs=db.rawQuery("SELECT * FROM personen WHERE name = ?", new String[]{naam});
if(curs!=null)
curs.moveToFirst();
有什麼不對的第一rawQuery,爲什麼不還給我的人m尋找,但只是數據庫中的第一人,而第二個rawQuery確實會返回正確的人?
使用'or'將返回其中一個條件被驗證的第一行,但是您的'curs.moveToFirst();'將只返回第一行,所以你必須做一段時間 –
你有人與財產的共同點。看看你的光標的大小。 – njzk2
curs.moveToFirst();只返回結果的第一行 –