我使用android room而不是sqllite。在我的应用程序数据库列中有多个记录。例如,我的列名是country。值是
我希望结果是
卡塔尔和德国不止一次。我想整理单品。我使用过input
。但它显示错误。我的代码如下所示。
CountryDao.java
SELECT DISTINCT name from country
Country.java
@Dao
public interface CountryDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void addCountry(Country country);
@Query("SELECT DISTINCT name from country")
public List<Country> getCountry();
}
它显示错误是 查询返回的列在com.android.db.Country中没有字段[id],即使它们注释为非null或原始。查询返回的列:[name]
AppDatabase.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;
}
}
在我通过添加此代码获取数据的活动中。 ``List co = database.countryDao()。getCountry();
答案 0 :(得分:3)
我通过改变得到了答案 我在 CountryDao.java 中更改了查询。将查询重写为
@Query("SELECT DISTINCT name from country")
public List<String> getCountry();
然后调用这样的活动。
List<String> co = database.countryDao().getCountry();
for(int i=0; i<co.size();i++) {
Log.d(TAG, "country:" + co.get(i));
}
问题在于我的代码按对象获取列表但我希望它在字符串中。感谢所有的朋友。
答案 1 :(得分:1)
List items = database.countryDao()。getCountry(); 字符串列表 在这里使用循环来迭代