2016-10-04 86 views
-2

我有兩個表名爲ListTaskSQLite:基於2個不同的ID值從一個表獲取數據到第二個表中

  • 列表表由兩列組成:由ListIDNAME
  • 任務表由:TaskIdTaskListIdNameNotesCompletedHidden

有其產生3列表ID名爲Personal,BusinessHistory的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,則將它們放入歷史記錄中。

+0

'...其中(TaskListID = 1或TaskListID = 2)...' –

回答

1

如果1個或2個部分是給你的日子不好過,那麼在這裏你去:

SELECT * FROM task WHERE TaskListID=1 OR TaskListID=2 AND HIDDEN=1

+0

如何在db.query()方法中使用它..?意味着如何形成where和whereargs等。 – saurabh169

+0

@saurabhsarpotdar使用'rawQuery()' –

+1

' WHERE(TaskListID = 1或TaskListID = 2)AND HIDDEN = 1' – mihail

相關問題