sql >> Database >  >> RDS >> SQLite

Hoe willekeurig tekst op knoppen van SQLite plaatsen zonder herhaling?

er zijn meer manieren om uw probleem op te lossen:

  1. voer de sql-instructie uit (zonder beperking) aan het begin en ga naar de volgende invoer van de cursor wanneer een vraag correct is beantwoord
  2. buffer de vragen die al beantwoord zijn

de tweede benadering kan als volgt worden gedaan:

verander eerst je methode en sql, inclusief een waar-clausule:

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

ten tweede, buffer de reeds beantwoorde vragen in je spelklasse:

voeg een LinkedList toe aan je spelklasse

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

voeg reeds beantwoorde vragen toe aan de LinkedList:

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

voeg een functie toe die de waar-clausule genereert:

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


  1. Op diepte gebaseerde boom genereren uit hiërarchische gegevens in MySQL (geen CTE's)

  2. Wat is het verschil tussen MySQL, MySQLi en PDO?

  3. Postgres ENUM-gegevenstype of CHECK CONSTRAINT?

  4. Alleen back-up SQL-schema?