0

我有一个从 sqlite 数据库中获取记录的方法,但过了一段时间我对其进行了一些更改,并创建了一个辅助方法来获取包含用户输入信息的特定记录。

我不知道为什么,但我原来的方法现在返回 null。

CardDb适配器:

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 Library + Tools 的应用程序。单击主菜单中的“搜索库”按钮,然后单击“简单搜索”按钮。它应该显示来自数据库的卡片列表。

我更改它的原因是因为我正在设置 Spinners,因此用户可以选择不同的交易卡组来选择一些,然后列出该特定组中的所有卡。

4

1 回答 1

0

固定的。我忘了返回字符串数组“returnedAllCardNames”,它在 do while 循环之后保存了所有进程卡记录的名称。

于 2013-06-21T23:07:46.163 回答