我有兩個表名爲List
和Task
。SQLite:基於2個不同的ID值從一個表獲取數據到第二個表中
- 列表表由兩列組成:由
ListID
和NAME
- 任務表由:
TaskId
,TaskListId
,Name
,Notes
,Completed
和Hidden
有其產生3列表ID名爲Personal
,Business
和History
的3個標籤使用TabManager
我需要的是如果我從個人或企業中刪除任務,然後通過設置Hidden = 1隱藏它。然後我想在我的歷史記錄標籤中顯示。如何實現這一點。 如何在SQLite中編寫查詢。我需要一個查詢類似下面
Select * from Task where (TaskListID=1 or 2 // this is the part giving me problem as TaskListId decides which task belongs to which tab like 1=personal,2=business) AND hidden==1;
以下是()用於爲當前標籤顯示數據的方法refreshTaskList。
public void refreshTaskList() {
// get task list for current tab from database
Context context = getActivity().getApplicationContext();
TaskListDB db = new TaskListDB(context);
//ArrayList<Task> tasks=new ArrayList<Task>();
if(Objects.equals(currentTabTag, "History"))
{
ArrayList<Task> tasks=db.getHistory(currentTabTag);
TaskListAdapter adapter = new TaskListAdapter(context, tasks);
taskListView.setAdapter(adapter);
}else
{
ArrayList<Task>tasks2=db.getTasks(currentTabTag);
TaskListAdapter adapter = new TaskListAdapter(context, tasks2);
taskListView.setAdapter(adapter);
}
此外,還有以下getTasks和getHistory方法用於從當前Tab的數據庫中提取任務。
public ArrayList<Task> getTasks(String listName) {
String where =
TASK_LIST_ID + "= ? AND " +
TASK_HIDDEN + "!='1'";
long listID = getList(listName).getId();
String[] whereArgs = {Long.toString(listID)};
this.openReadableDB();
Cursor cursor = db.query(TASK_TABLE, null,
where, whereArgs,
null, null, null);
ArrayList<Task> tasks = new ArrayList<Task>();
while (cursor.moveToNext()) {
tasks.add(getTaskFromCursor(cursor));
}
if (cursor != null)
cursor.close();
this.closeDB();
return tasks;
}
public ArrayList<Task> getHistory(String listName)
{
String where =
TASK_LIST_ID + "= ? AND " +
TASK_HIDDEN + "=='1'";
long listID = getList(listName).getId();
String[] whereArgs = {Long.toString(listID)};
this.openReadableDB();
Cursor cursor = db.query(TASK_TABLE, null,
where, whereArgs,
null, null, null);
Log.v(TAG,"Value of cursor is-" +cursor);
ArrayList<Task> tasks = new ArrayList<Task>();
while (cursor.moveToNext()) {
tasks.add(getTaskFromCursor(cursor));
}
if (cursor != null)
cursor.close();
this.closeDB();
return tasks;
}
我覺得是,TASK_LIST_ID作爲其決定哪些任務屬於在DB的選項卡的外鍵。所以我需要的是一個這樣的查詢,我可以從兩個選項卡(即Personal和Business)獲取任務,如果它們的隱藏值設置爲1,則將它們放入歷史記錄中。
'...其中(TaskListID = 1或TaskListID = 2)...' –