sql >> Databáze >  >> RDS >> SQLite

Jak náhodně nastavit text na tlačítka z SQLite bez opakování?

existuje více přístupů k vyřešení vašeho problému:

  1. proveďte příkaz sql (bez omezení) na začátku a přejděte na další položku kurzoru, když je otázka zodpovězena správně
  2. uložte do vyrovnávací paměti otázky, které již byly zodpovězeny

druhý přístup lze provést následovně:

nejprve změňte svou metodu a sql, včetně klauzule where:

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

za druhé, uložte do paměti již zodpovězené otázky ve vaší herní třídě:

přidejte LinkedList do své herní třídy

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

přidat již zodpovězené otázky do LinkedList:

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

přidejte funkci, která generuje klauzuli where:

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


  1. 5 způsobů, jak vrátit řádky, které obsahují malá písmena v SQL Server

  2. Vložit data z jedné tabulky do druhé v MySQL

  3. Jak používat RANK() v SQL Server

  4. MySQL spoušť nefunguje, jednoduchá syntaxe, nic složitého