我從SQLite數據庫填充listview,並且當我點擊一個項目時應用程序崩潰。我用「查詢」和「原始查詢」做了足夠的研究。在SQLite數據庫瀏覽器中也成功執行了rawquery語句,但仍然是相同的語句在我的代碼中不起作用。SQLite查詢執行崩潰Android應用程序
下面是我的ListView onitemclicklistener的代碼:
// Bookmark ListView Listener
bookmarkListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent1, View view1, int position1,
long id1) {
String selectedBookmarkItem = ((TextView)view1).getText().toString();
dbAdapter.read();
Map<String, Object> bookmarkKV = dbAdapter.getSingleBookmark(selectedBookmarkItem);
String bookmarkedURL = (String) bookmarkKV.get(dbAdapter.BOOKMARK_ADDRESS);
dbAdapter.close();
Toast.makeText(getBaseContext(), bookmarkedURL, Toast.LENGTH_LONG).show();
}
});
方法getSingleBookmark代碼:
// Fetch Single Bookmark
public Map<String, Object> getSingleBookmark(String bookmarkName1) throws SQLException{
Map<String, Object> map1 = new HashMap<String, Object>();
Cursor cursor1 = db.query(true, BOOKMARKS_TABLE, new String[] {BOOKMARK_ADDRESS},
BOOKMARK_NAME + "=" + bookmarkName1, null, null, null, null, null);
if(cursor1 != null){
cursor1.moveToFirst();
}
String bookmarkAddress = cursor1.getString(cursor1.getColumnIndex(BOOKMARK_ADDRESS));
map1.put(BOOKMARK_ADDRESS, bookmarkAddress);
//String bookmarkName = cursor1.getString(cursor1.getColumnIndex(BOOKMARK_NAME));
//map1.put(BOOKMARK_NAME, bookmarkName);
return map1;
}
logcat的條目:
09-30 03:43:12.791: E/AndroidRuntime(29008): FATAL EXCEPTION: main
09-30 03:43:12.791: E/AndroidRuntime(29008): android.database.sqlite.SQLiteException:
no such column: gmail (code 1): , while compiling: SELECT DISTINCT bookmarkaddress
FROM bookmarkstable WHERE bookmarkname=gmail
當我點擊在 「Gmail的」 項目listview,該應用程序崩潰說:「不幸的是,應用程序已停止」。
但數據庫表中有一行「Gmail的」條目:
看看這個查詢,它看起來像Gmail應該有單引號,例如, 'SELECT DISTINCT bookmarkaddress FROM bookmarkstable WHERE bookmarkname ='gmail'' –
每當有東西崩潰,就會產生一個異常。您可以將這些數據寫入日誌文件並查看:) –
您可以發佈您的數據庫類的onCreate方法代碼嗎? –