2016-10-04 82 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

相关问题