作者:书友79086887 | 来源:互联网 | 2023-01-05 09:06
我正在使用android room而不是sqllite。在我的应用程序数据库列中有多个记录。例如,我的列名是国家。这些值是
印度
德国
卡塔尔
德国
爱尔兰
沙特
美国
德国
非洲
卡塔尔
德国
我想要结果是
印度
德国
卡塔尔
爱尔兰
沙特
美国
非洲
在卡塔尔和德国卡梅斯比倍以上。我想对单个项目进行分类。我已经习惯了SELECT DISTINCT name from country
。但是它显示出错误。我的代码如下所示。
CountryDao.java
@Dao
public interface CountryDao {
@Insert(OnConflict= OnConflictStrategy.REPLACE)
void addCountry(Country country);
@Query("SELECT DISTINCT name from country")
public List 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;
}
}
它显示错误为:查询返回的列在com.android.db.Country中没有字段[id],即使它们被注释为非null或原始类型。查询返回的列:[名称]
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;
}
}
在我的活动中,通过添加此代码来获取数据。``列出co = database.countryDao()。getCountry();
1> Fazil fazi..:
通过进行更改,我得到了答案,在CountryDao.java中更改了查询。将查询重写为
@Query("SELECT DISTINCT name from country")
public List getCountry();
然后像这样调用活动。
List co = database.countryDao().getCountry();
for(int i=0; i
问题是在我的代码中按对象获取列表,但我希望使用字符串。感谢所有的朋友。