2013-06-21 22 views
0

我有一個方法從sqlite數據庫提取記錄,但過了一段時間後,我改變了一點,並提出了一個用用戶輸入的信息獲取特定記錄的輔助方法。Android; SQLite數據庫遊標爲空。它不應該。我不知道爲什麼它是

我不知道爲什麼,但我原來的方法現在返回null。

CardDbAdapter:

public CarddbAdapter open2() throws SQLException { 
     String myPath = DB_PATH + DB_NAME; 
     myDatabaseR = SQLiteDatabase.openDatabase(myPath, null, 
       SQLiteDatabase.OPEN_READONLY); 
     myDatabaseW = SQLiteDatabase.openDatabase(myPath, null, 
       SQLiteDatabase.OPEN_READWRITE); 
     return this; 
    } 

public void MyDatabaseClose() { 
     myDatabaseW.close(); 
     myDatabaseR.close(); 
    } 

public ArrayList<String> getAllCardNames() { 
     ArrayList<String> returnedAllCardNames; 
     ArrayList<String> NoResults; 
     ArrayList<String> NoResults2; 
     NoResults = new ArrayList<String>(); 
     NoResults.add("cursor is null"); 
     NoResults2 = new ArrayList<String>(); 
     NoResults2.add("No similar cards found."); 
     returnedAllCardNames = new ArrayList<String>(); 

     /*String sqlquery_cardNames = "SELECT " + KEY_CARDNAME 
       + " FROM cards WHERE card_name like '%" + passedName 
       + "%' ORDER BY card_name ASC";*/ 
     //String sqlquery_cardNames; 
     String sqlquery_cardNames = "SELECT DISTINCT card_name FROM cards"; 
     Cursor c_cardNames; 
     c_cardNames = myDatabaseW.rawQuery(sqlquery_cardNames, null); 

     c_cardNames.moveToFirst(); 
     if (c_cardNames != null) { 
      do { 
       if (c_cardNames.getCount() > 0) { 
        String returnedName = c_cardNames.getString(c_cardNames 
          .getColumnIndex(KEY_CARDNAME)); 
        returnedAllCardNames.add(returnedName); 
       } else { 
        return NoResults2; 
       } 
      } while (c_cardNames.moveToNext()); 
     } 
     return NoResults; 
    } 

如何我使用它:

CarddbAdapter yugiohDB = new CarddbAdapter(this); 

yugiohDB.open2(); 

       search_results = (ListView) findViewById(R.id.lvSearchResults); 
       search_results.setOnItemClickListener(this); 

       ArrayList<String> returnedCards_list1 = new ArrayList<String>(); 
       returnedCards_list1.addAll(yugiohDB.getAllCardNames()); 

       listAdapter = new ArrayAdapter<String>(SearchMode_Simple.this, 
         android.R.layout.simple_list_item_1, returnedCards_list1); 
       search_results.setAdapter(listAdapter); 
       yugiohDB.MyDatabaseClose(); 

任何幫助,將不勝感激。

如果你想看看這實際上應該做什麼,然後下載我的應用程序稱爲Yugioh圖書館+工具。點擊主菜單中的搜索庫按鈕,然後點擊簡單搜索按鈕。它應該顯示數據庫中的卡片列表。

我改變它的原因是因爲我設置了Spinners,所以用戶可以選擇不同的交易卡組來選擇一些列表,然後列出來自該特定組的所有卡。

回答

0

固定。我忘了返回字符串數組「returnedAllCardNames」,它在do while循環之後保存了所有進程卡記錄的名稱。

相關問題