2017-12-14 1 views
0

ich benutze android zimmer statt sqllite. In meiner Anwendung Datenbank Spalte haben mehrere Datensätze. Zum Beispiel ist mein Spaltenname Land. Die Werte sindwie distinct in android zimmer zu verwenden

  • Indien
  • Deutschland
  • Katar
  • Deutschland
  • Irland
  • Saudi
  • Amerika
  • Deutschland
  • Afrika
  • Katar
  • Deutschland

Ich möchte das Ergebnis ist

  • Indien
  • Deutschland
  • Katar
  • Irland
  • Saudi
  • Amerika
  • Afrika

Die Katar und Deutschland Cames mehr als mal. Ich möchte einen einzelnen Artikel sortieren. Ich habe SELECT DISTINCT name from country verwendet. Aber es zeigt Fehler. Mein Code ist unten abgebildet.

CountryDao.java

@Dao 
public interface CountryDao { 
@Insert(onConflict = OnConflictStrategy.REPLACE) 
void addCountry(Country country); 
@Query("SELECT DISTINCT name from country") 
public List<Country> getCountry(); 
} 

Country.java

@Entity 
public class Section { 
    @PrimaryKey(autoGenerate = true) 
    private int id; 
    private String name; 

    public Section(int id, String name){ 
    this.setId(id); 
    this.setName(name); 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

Es ist zeigt der Fehler Die Spalten von der Abfrage zurück nicht über die Felder [id] in com .android.db.Country, obwohl sie als nicht null oder primitiv kommentiert sind. Spalten von der Abfrage zurückgegeben: [name]

AppDatabase.java

@Database(entities = {Country.class}, version = 5, exportSchema = false) 
public abstract class AppDatabase extends RoomDatabase{ 
private static AppDatabase INSTANCE; 
public abstract ClassDao classDao(); 
public abstract SessionDao sessionDao(); 
public abstract SectionDao sectionDao(); 
public static AppDatabase getDatabase(Context context) { 
    if (INSTANCE == null) { 
     INSTANCE = 
       Room.databaseBuilder(context, AppDatabase.class, "edumiadatabase").fallbackToDestructiveMigration() 
         .build(); 
    } 
    return INSTANCE; 
} 

public static void destroyInstance() { 
    INSTANCE = null; 
} 
} 

In meiner Tätigkeit Abrufen von Daten durch diesen Code hinzufügen. `` Liste co = database.countryDao(). GetCountry();

+0

@CommonsWare Ich habe meinen Code bearbeitet. Bitte überprüfen. –

+0

@pskink Ich habe meinen Code bearbeitet. Bitte überprüfen. –

+0

Sie haben keinen Code für Ihre 'Country' Klasse. Sie haben Code für eine 'Section'-Klasse. – CommonsWare

Antwort

0

ich durch Änderungen bekam die Antwort auf iterieren Ich habe die Abfrage in CountryDao.java ändern.schreibe die Abfrage in

@Query("SELECT DISTINCT name from country") 
public List<String> getCountry(); 

Dann rufe die Aktivität so auf.

Es ist das Problem ist in meinem Code die Liste nach Objekt, aber ich will es in Strings. Danke für alle Freunde.

1

Listenelemente = database.countryDao(). GetCountry(); Liste der Strings Verwendung für hier Schleife

+0

ys, ist id Primärschlüssel –

+0

Sie versuchen Liste der Länder Objekte Rückkehr aber Ihre SQL-Abfrage ist für die Liste der Strings https://pastebin.com/8UsfdeSK –

+0

u kann die Abfrage sagen Sie mir, verschieden zu verwenden –

Verwandte Themen