2013-01-11 2 views
0


ID를 사용하여 데이터베이스에서 임의의 행을 요청하는 쿼리를 만들었습니다. 그러나 나는 약간의 문제가있다. 메시지가 존재하거나 존재하지 않으면 메시지를 표시하고 싶습니다. 예를 들어 같은 내 데이터베이스 :

ID - ingilizce - 터키어
1 - 안녕하세요 - merhaba
4 - 하이 - selam

보시다시피, 두 번째와 세 번째 기록은 존재하지 않습니다. 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의 결과를 테스트해야합니다. true는 행이 있음을 의미하고 false는 행이 없음을 의미합니다. – njzk2

+0

하지만,'select * from kelimeler order 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

모든 질문을 마칠 때까지 재귀 적으로 만드는 것이 좋습니다 ... 매번 반복되는 방식입니다. –

관련 문제