-1

カーソルに問題があります。ループで他の値と比較する値を選択するアラームマネージャーを作成しました。

私の問題はこれです:カーソルがループの外にある場合、これは私のfirst値のみを選択します(1つの値のみが存在する場合は明らかにこれのみを選択します)...カーソルがループ内にある場合、このlast値のみを選択します(1つのみ存在する場合)値は明らかにこれだけを選択します)。

これを修正する方法は?

私の質問:

public Cursor getRegistry2()
    {
        return (getReadableDatabase().query(
            TabRegistry.TABLE_NAME, 
            TabRegistry.COLUMNS, 
            TabRegistry._ID, 
            null,
            null, 
            null, 
            null));

使用中のカーソル:

 Cursor c5 = databaseHelper.getRegistry2();
                     c5.moveToFirst();
                        while(c5.isAfterLast() == false){   
                            tipe = c5.getString(c5.getColumnIndex(TabRegistry.TYPE)); 

                            status = c5.getString(c5.getColumnIndex(TabRegistry.STATUS)); 
                            number = c5.getString(c5.getColumnIndex(TabRegistry.NUMBER)); 
                        c5.moveToNext();
                        }
                       c5.close(); 

前もって感謝します!

4

3 に答える 3

2

コメントで述べたように、実際に特定のアイテムを見つけようとしている場合は、実際にそれを探す必要があります。

ステータスを比較しようとしていると仮定すると、次のようになります。

while(c5.isAfterLast() == false){   
    tipe = c5.getString(c5.getColumnIndex(TabRegistry.TYPE)); 
    status = c5.getString(c5.getColumnIndex(TabRegistry.STATUS)); 
    number = c5.getString(c5.getColumnIndex(TabRegistry.NUMBER)); 
    if (status.equals(comparisonString)){
        break;
    }
    c5.moveToNext();
}

これはループから抜け出し、探しているアイテムに設定された値を残します。

個人的には、これは多くの計算オーバーヘッドであり、クエリを実行して比較値を直接検索し、返されたカーソルが空であるかどうかを確認します。はるかに簡単です。

于 2012-04-24T15:55:04.107 に答える
0

私はあなたの問題を理解していませんが、私にとって奇妙なことは:while(c5.isAfterLast() == false){

に置き換えてwhile (c5.moveToNext()) {削除しようとしましたc5.moveToFirst();か?

于 2012-04-24T15:44:08.440 に答える
0

tipeの値を上書きしていることを知っておく必要がstatusありnumberます。カーソルに複数の値がある場合に備えて。

Cursor c5 = databaseHelper.getRegistry2();
if(c5.moveToFirst()){
 do{   
    tipe = c5.getString(c5.getColumnIndex(TabRegistry.TYPE)); 

    status = c5.getString(c5.getColumnIndex(TabRegistry.STATUS)); 
    number = c5.getString(c5.getColumnIndex(TabRegistry.NUMBER));
 }while(c5.moveToNext());
}
c5.close();
于 2012-04-24T15:49:48.553 に答える