0

sqlite テーブルの行がデータベースに存在するかどうかを確認したい.行が存在する場合は、クラスを呼び出す必要があります。それ以外の場合は、別のクラスを呼び出します。この機能を使用するには

  public boolean Exists(int position) {

       SQLiteDatabase db =  (placeData).getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from pages where bbookid ='"+ position +"'", null);

       boolean exists = (cursor.getColumnName(position)) != null;
       Log.i("logs","fads");
       if(exists=true)
       {
           getDataAndPopulate();
       }
       else
       {
       Log.i("qefw","cursors");
       new LoadAllProducts().execute();
       }
       cursor.close();
       return exists;
    }

しかし、このコードを使用すると、行が再挿入されます..機能にアプローチする方法を誰かに提案してもらえますか

4

2 に答える 2

2

この式の評価がtrue:

if(exists=true)

単一の等号がある場合、それは代入を意味します。と比較するのではなく、 に割り当てtrueています。割り当ての結果は、割り当てられた値です( )。existsexiststrueexiststrue

代わりに適切な等価演算子を試してください:

if (exists == true)

この問題の別の見方については、この関連記事を参照してください。

于 2012-11-23T04:07:45.233 に答える
0

ここで問題は if(exists=true) にあります。if (exists == true) に変更する必要があります。cursor.getCount(); を使用して確認することもできます。カーソル内の行数を返します

于 2012-11-23T09:14:38.247 に答える