2013-01-11 82 views
0


我做了一個查詢,它使用ID從數據庫請求一個隨機行。但我有一個小問題。我希望它顯示一條消息,如果它存在或它不存在。例如我的數據庫這樣的:

ID - ingilizce - turkce
1 - 你好 - merhaba
4 - 喜 - 塞拉姆

正如你看到的,第二個和第三個記錄不存在。我生成一個1到4之間的隨機數,並得到屬於ID的行。所以,當它產生一個像2或3的數字時,它會產生一個新的隨機數。
我的代碼是在這裏:
如果所選行不存在,Android數據庫不會執行任何操作

公共無效kelimeUret(){

SQLiteDatabase db = kelimeler.getReadableDatabase(); 

rastgele = new Random(); 

Cursor kayit = db.rawQuery("SELECT count(*) FROM kelimeler", null); 

kayit.moveToFirst(); 

int max = Integer.parseInt(kayit.getString(0)); 
int min = 1; 

int rastgeleKayit = rastgele.nextInt(max - min + 1) + min; 

Cursor kayit3 = db.rawQuery("SELECT * FROM kelimeler WHERE id=" + rastgeleKayit, null); 
kayit3.moveToFirst(); 
int kayitSayisi = kayit3.getCount(); 

if (kayitSayisi<1) { 

    //Toast.makeText(getApplicationContext(), "bu kayıt yok", Toast.LENGTH_SHORT).show(); 
    //kelimeUret(); 

    // I COULDN'T DO HERE ! 

} else { 

    Cursor kayit2 = db.rawQuery("SELECT ingilizce FROM kelimeler WHERE id=" + rastgeleKayit, null); 

    kayit2.moveToFirst(); 

    String sonuc = kayit2.getString(0); 

    olusturulanKelime = sonuc; 

    kelime = (TextView) findViewById(R.id.kelime); 
    kelime.setText(sonuc); 

} 

感謝您的響應...

+0

你必須測試moveToFirst的結果。真正意味着有一排,假意味着沒有。 – njzk2

+0

但我建議使用'select * from kelimeler order by random()limit 1' – njzk2

回答

0
Cursor kayit3 = db.rawQuery("SELECT * FROM kelimeler WHERE id=" + rastgeleKayit, null); 
kayit3.moveToFirst(); 

kayit3.getCount();將返回查詢返回的記錄數。如果沒有記錄,則不存在。如果它返回多於一條記錄,則記錄存在。

希望這可以幫助

+0

這就是我期待的!謝謝。 – halilkaya

+0

如果不存在,我應該如何刷新隨機數?我的新代碼已被編輯。 – halilkaya

+0

更好的做這個遞歸,直到你完成所有的問題......這種方式每次都會迭代 –

相關問題