2012-03-19 67 views
3

我想查詢我的Android SQLite數據庫使用以下INTERSECT查詢,但它崩潰。這兩個選擇查詢自己的正常工作和他們肯定是產生匹配的結果,所以我不明白爲什麼相交聲明將無法工作:如何編寫Android SQLite數據庫INTERSECT查詢

SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase(); 
Cursor cursor = db.rawQuery("SELECT tblsyndromes._id, synname" + 
" FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId =  tblsyndromes._id" + 
" WHERE tblsymsynlink.symId = "+intCondition+" " + 
" INTERSECT SELECT tblsyndromes._id, synname FROM tblsyndromes JOIN synconlink" + 
" ON synconlink.synId = tblsyndromes._id" + 
" WHERE synconlink.conId = "+intCondition2+"", null); 

新代碼,我使用 -

String sqlString = "SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes  JOIN synconlink ON synconlink.synId = tblsyndromes._id WHERE synconlink.conId = 55 INTERSECT SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId = tblsyndromes._id WHERE tblsymsynlink.symId = 136"; 

SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase(); 

Cursor cursor = db.rawQuery(sqlString,null); 

ArrayList<String> mArrayList = new ArrayList<String>(); 
cursor.moveToFirst(); 
while(!cursor.isAfterLast()) { 
    mArrayList.add(cursor.getString(cursor.getColumnIndex("synname"))); 
    cursor.moveToNext(); 
} 

我多次測試了SQL中使用sqlite3的和它的作品 - 無論是選擇查詢中的Android獨立工作,但只要我嘗試使用INTERSECT我得到一個崩潰 - 現在我收到以下錯誤

壞請求字段插槽0,-1。 numRows = 3,numColumns = 2

+0

錯誤說的是什麼? – zapl 2012-03-19 21:20:26

+0

對不起延遲的錯誤說 03-26 20:45:45.949:INFO /數據庫(31208):源碼返回:錯誤代碼= 0,味精=回收從WAL文件/數據/數據/ 63幀
03-26 20:45:45.999:信息/數據庫(31208):sqlite返回:錯誤代碼= 1,msg =接近「synconlink」:語法錯誤 – user985869 2012-03-26 20:10:54

+0

我沒有看到任何錯誤。錯誤說你在「synconlink」附近寫了一些錯誤,這應該是JOIN之後的錯誤。你有沒有試圖直接通過sqlite執行相同的查詢?也許這給你更多的洞察力。 – zapl 2012-03-26 20:55:39

回答

-1
public Long insert_todoinfo(String a, String b, String c, String d, 
      String e, String f, String g) { 
     // TODO Auto-generated method stub 
     ContentValues con = new ContentValues(); 
     con.put("title", a); 
     con.put("description", b); 
     con.put("category", e); 
     con.put("due_date", c); 
     con.put("alarm_time", d); 
     con.put("alarm_set", f); 
     con.put("priority", g); 
     con.put("parform", "false"); 
     return mDb.insert(DATABASE_TABLE_TODO_LIST, null, con); 
    } 
+0

你能解釋一下這是什麼 - 它似乎沒有與我的問題有關? – user985869 2012-03-26 10:18:10

+1

@ user985869與您的問題無關,將東西插入到待辦事項列表中 – zapl 2012-03-26 20:52:15