【发布时间】:2018-10-01 11:07:27
【问题描述】:
我想从 SQLite 获取最后三个数据
我已经查询了从 SQLite 数据库中获取所有数据的日期和时间
但我想获取最后三个数据查询是
List<Company> companyList = new ArrayList<Company>();
String selectQuery = "SELECT * FROM " + COMPANY + " ORDER BY (" + KEY_CREATED_AT + ") DESC " ;
听说我正在获取数据:
companyList = myComDb.getAllCompany();
companiesAdapter = new CompaniesAdapter(companyList);
companiesAdapter.setClickListener(companyListItemClickListner);
RecyclerView.LayoutManager mLayoutManager1 = new LinearLayoutManager(getActivity().getApplicationContext());
rvCompanies.setLayoutManager(mLayoutManager1);
rvCompanies.setItemAnimator(new DefaultItemAnimator());
rvCompanies.setAdapter(companiesAdapter);
我只想获取最近添加的 3 条数据
【问题讨论】:
-
只在查询中使用限制
-
您已经创建了日期字段。只需使用按创建日期描述的订单限制即可。
-
任何其他技术都可以获取三个数据,例如使用 for 循环或任何东西如果我获取所有数据和所有这些 for 循环
List<Company> companyList1 = new ArrayList<>(); for(int i = companyList.size()-1; i>companyList.size()-4; i-- ) { companyList1.add(companyList.get(i));第一次它获取 3 个数据但现在这不起作用@ADM -
Sqlite 不保证插入顺序。因此,最终您必须通过使用循环或限制来使用顺序。使用限制是正确的解决方案。所有结果将仅在单个查询中加载。如果您想在下一次调用中获取下一个 3 数据,请使用关键字 OFFSET 。查看 sqlite 文档。
-
你可以保持这种状态。加载所有数据从来都不是一个好的解决方案。使用
LIMIT和OFFSET分页加载数据块(如果它很大)。