2011-10-24 25 views
1

我有這個問題讓我的遊標返回我的查詢與選擇字符串。 下面是光標的樣本結構:Android數據庫多選

String T_NAME = "tableName"; 
String T_ID = "idTable"; 
String C_FIRST = "first"; 
String C_SECOND = "second"; 

Cursor cursor = database.query(T_NAME, null, C_FIRST + " = ? AND " + C_SECOND + " = ?", new String[] { String.valueOf(firstArr), String.valueOf(secondArr) } , null, null, T_ID); 

當我檢查cursor.getCount()將其返回0,但是當使用SQLite數據庫瀏覽器檢查表,並與它下面的SQL命令返回適當的數據。

SELECT * FROM tableName WHERE first = 0 AND second = 0 

錯誤的原因是什麼?我該如何解決?

在此先感謝。

+0

哪種數據是firstArr和secondArr?請看,看在上帝的份上,告訴我他們不是陣列。 – Cristian

+0

都是int作爲數據類型,C_FIRST和C_SECOND是INTEGER作爲數據類型。 –

+0

我看到的一個區別是Java代碼中有ORDER BY子句。如果我錯了,請糾正我,但是您是否需要將「ASC」或「DESC」指定爲通過SQLite查詢排序的方式?如果您爲orderBy傳入null,它會起作用嗎? – Craigy

回答

1

你的代碼對我來說看起來很好。你確定用SQLite數據庫瀏覽器查詢的SQLite數據庫是否與你的應用程序正在訪問的SQLite數據庫相同?

使用adb遠程shell直接連接到設備上的數據庫文件並在那裏發出您的選擇查詢。例如:

$ adb -d shell 
# sqlite3 /data/data/your.app.package.name/databases/your_database.db 
sqlite> SELECT * FROM tableName WHERE first = 0 AND second = 0 
+0

再來一次?我打算使用終端模擬器?進入「adb -d shell」命令後,我得到一個拒絕訪問。 –

+0

您可能需要在模擬器中加載您的應用程序並使用「adb -e shell」。使用adb shell命令查詢設備上的SQLite數據庫在此處進行了說明:http://developer.android.com/guide/developing/tools/adb.html#shellcommands –