2017-09-16 5 views
0

これが私のコードで削除します。SQLiteDatabaseは(table_nameは、NULL、NULL)はテーブル内のすべての行を削除されていない

Db.getInstance().beginTransaction(); 
int i = Db.getInstance().delete("friends", null, null); 
Log.e(TAG, "dropDB: " + i); 
Db.getInstance().setTransactionSuccessful(); 
Db.getInstance().endTransaction(); 

私はSOのコミュニティを検索しましたが、このコードで間違っているものを見つけることができません。私が削除すると、iの値は削除された行の数ですが、依然としてデータベースは行を返し続けます。 DbはSQLiteDatabaseオブジェクトを初期化してgetWritableDatabase()を取得する独自のヘルパークラスです。

+0

を試してみてください? 「行を返す」とは、具体的にはどういう意味ですか? – laalto

+0

これは、影響を受ける行の数を返します。この場合、削除されます。 – user2278116

+0

上記のコードの後に​​、 'Cursor csr = Db.getInstance()。query(" friends " 、null、null、null、null、null、null、null); Log.d(TAG、 "友人は今" + Integer.toString(csr.getCount())+ "行"); '。 *私はチェックしていないので、タイプミスが発生する可能性があります。* – MikeT

答えて

0

何もないかもしれませんが、getInstance()を一度呼び出して変数に設定してみてください。

+0

それは、getInstance()は常にオブジェクトを返します.Dbはシングルトンです – user2278116

0

ユーザーがbtnYESをクリックしてテーブルを削除したときに、これをCustomDialogで使用します。それがパスワードを保持するため 私は今までのテーブルを知っているが、一つのレコードを持っているので、あなたが取引を入れ子にしているか、この

   db = helper.getReadableDatabase(); 

      String q = "SELECT * FROM masterPW"; 
      Cursor cursor = db.rawQuery(q,null); 
      // Above query gets TABLE_PW data from Col_IDI 
      // TABLE_PW will only ever have one row of data 

      int rowID = 99; 
      if(cursor.moveToFirst()){ 
       rowID = cursor.getInt(cursor.getColumnIndex(Col_IDI)); 
       str = cursor.getString(cursor.getColumnIndex(Col_MPW)); 
      } 
      cursor.close(); 

      // Line of code below WORKS deletes entire TABLE <===== 
      // Not a recommended way to re-set the master password 
      // db.delete(TABLE_PW, null, null); 
関連する問題