gpt4 book ai didi

java - 如何使用 SQLite 中的子列表填充复杂列表?

转载 作者:行者123 更新时间:2023-12-01 10:17:44 26 4
gpt4 key购买 nike

我有一个列表结构,我想从数据库中填充它。我已经映射了所有表和插入方法。但是我不知道获取所有这些数据并填充我的 Java 对象的最佳方法是什么。我有这样的结构:



公共(public)类 DailySchedule {
私有(private)长ID;
私有(private)列表 任务;
私有(private)列表<计划>计划;
}

公共(public)课任务{
私有(private)长ID;
私有(private)期限长;
私有(private)字符串描述;
私有(private)日期日期;
}

公开课计划{
私有(private)长ID;
私有(private)字符串描述;
私有(private)日期日期;
私有(private)列表 用户;
}

公共(public)类用户{
私有(private)长ID;
私有(private)字符串名称;
}

我应该创建一个巨大的 INNERJOIN 并获取所有数据(包括重复信息)并尝试填充 Java 对象,还是应该从每个表中获取所有 Id 并在 Java 中执行循环(使用光标)并执行选择ID 并填充表格?

最佳答案

我假设您有下表

  • 每日时间表
  • 任务
  • 计划
  • 用户

代码

public List<DailySchedule> getDailySchedules(){
SQLiteDatabase db = getReadableDataBase();
Cursor dailyScheduleCursor = db.rawQuery(“Select * from daily_schedule ”);
List<DailySchedule> all = new ArrayList<>();
While(dailyScheduleCursor.next()){
DailySchedule dailySchedule = new DailySchedule();
dailySchedule.setId(dailyScheduleCursor.getLong(0));
dailySchedule.setTasks(getTasks(dailyScheduleCursor.getLong(0)));
dailySchedule.setPlans(getTasks(dailyScheduleCursor.getLong(0)));
all.add(dailySchedule);
}
db.close();
}
public List<Task> getTasks(int id ){
SQLiteDatabase db = getReadableDataBase();
Cursor taskCursor = db.rawQuery(“Select * from tasks where id =’”+id+”’ ”);
List<Task> all = new ArrayList<>();
While(taskCursor.next()){
Task task = new task();
task.setId(taskCursor.getLong(0));
// set other attributes
all.add(task);
}
db.close();
return all;


}

public List<Plan> getPlan(int id ){

getUser(id);// get all plans
// set user
return plans;
}
public User(int id){
//create user from data
return user;
}

然后从某处调用getDailySchedules()

注意如果您想查看 SQLite 数据库内容,请使用 AndroidDBvieweR

关于java - 如何使用 SQLite 中的子列表填充复杂列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com