sql >> Database teknologi >  >> RDS >> SQLite

Hvordan indstiller man tilfældigt tekst til knapper fra SQLite uden gentagelser?

der er flere metoder til at løse dit problem:

  1. udfør sql-sætningen (uden begrænsning) i begyndelsen og flyt til næste indtastning af markøren, når et spørgsmål er besvaret korrekt
  2. buffer de spørgsmål, som allerede er besvaret

den anden fremgangsmåde kunne gøres som følger:

først skal du ændre din metode og sql, inklusive en where-klausul:

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

for det andet, buffer de allerede besvarede spørgsmål i din spilklasse:

tilføje en LinkedList til din spilklasse

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

tilføj allerede besvarede spørgsmål til LinkedList:

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

tilføje en funktion, som genererer where-sætningen:

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


  1. Automatisering af den tabelformede modelbehandling af SSAS-databaser i SQL Server

  2. INNER JOIN vs LEFT JOIN ydeevne i SQL Server

  3. Sådan vises en dato i britisk format i SQL Server (T-SQL)

  4. 2 måder at returnere rækker, der indeholder ikke-alfanumeriske tegn i PostgreSQL