SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak losowo ustawić tekst do przycisków z SQLite bez powtórzeń?

istnieje więcej sposobów rozwiązania Twojego problemu:

  1. wykonaj instrukcję sql (bez ograniczeń) na początku i przejdź do następnego wpisu kursora, gdy odpowiedź na pytanie jest prawidłowa
  2. buforuj pytania, na które już udzielono odpowiedzi

drugie podejście można wykonać w następujący sposób:

najpierw zmień metodę i sql, w tym klauzulę where:

public Cursor getTestData(String whereClause)
 {;
     try
     {
         String sql ="SELECT * FROM tblPitanja WHERE 1 = 1 " + whereClause + " ORDER BY RANDOM() LIMIT 1";
         [...]

po drugie, zbuforuj pytania, na które już udzielono odpowiedzi w swojej klasie gry:

dodaj LinkedList do swojej klasy gry

LinkedList<Long> mAnsweredQuestions = new LinkedList<Long>();

dodaj pytania, na które już udzielono odpowiedzi, do LinkedList:

Cursor c = mDbHelper.getTestData(generateWhereClause());
mAnsweredQuestions.add(c.getLong(0));
List<Answer> labels = new ArrayList<Answer>();
[...]

dodaj funkcję, która generuje klauzulę where:

private String generateWhereClause(){
    StringBuilder result = new StringBuilder();
    for (Long l : mAnsweredQuestions){
         result.append(" AND " + YOURID + " <> " + l);
    }
    return result.toString();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd Android SQLite:numer zmiennej musi mieścić się w zakresie od ?1 do? 999?

  2. Funkcje i operatory JSON w SQLite (pełna lista)

  3. Zamknięty wyjątek Androida SQLite

  4. Jak działa SQLite Char()

  5. Używanie Robolectric z SQLiteAssetHelper