2017-01-04 8 views
0

MainActivityでデータベースを作成しましたが、そのデータベースをEditActivityで削除または更新する方法を以下に示します。AndroidでSQLiteDatabaseを使用して削除または更新する方法

private void deleteNote() { 
    SQLiteDatabase db; 
    db = openOrCreateDatabase("note.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
    db.execSQL("CREATE TABLE IF NOT EXISTS note(" 
      + "idx INTEGER PRIMARY KEY AUTOINCREMENT," 
      + "name TEXT," 
      + "date TEXT," 
      + "taste TEXT," 
      + "rating FLOAT" + ");"); 
    db.execSQL("DELETE FROM note WHERE idx = " + positionInt + ";"); 
    Toast.makeText(EditActivity.this, "Delete Success", Toast.LENGTH_SHORT).show(); 
    db.close(); 
} 

上記は私のコードの削除ですが、正しく動作しないようです。トーストメッセージ(「削除成功」)が表示されますが、DBにはまだ削除されたデータがあります。

私の質問には次のようなものがあります:1)コードに間違った部分がありますか? 2)仮想デバイスを使用せずに、Androidモニターでデータが削除されたかどうかを確認する方法はありますか?

多くの感謝!いくつかの教祖が私を助けてくれることを願っています!

+0

もちろん、無条件で実行されるので、トーストが表示されます。おそらく 'idx =" + positionInt'というレコードはありません。ListView(または他のリスト/グリッド形式のビュー)とテーブル行IDの位置は**同じものではありません。ところで、SQLクエリやコマンドの最後の '; 'は**完全に役に立たない**(文字列の連結は時間のかかる操作です) –

+0

私はMainActivityのListViewから位置番号を取得していました。私が作業しているEditActivityで定義しました。 'Int positionInt = getIntent()。getIntExtra(" position "、positionInt);'セミコロンを知ってくれてありがとうございます! –

+0

'MainActivityのListViewから位置番号を取得しましたそして、私が働いているEditActivityで定義しました。正確に私が理解したところです。そして、私が言ったように、ListView内の位置は**テーブルの行IDと**何も関係ありません** –

答えて

1

代わりにdb.delete()を使用してください。検証に使用できる影響を受けた行の数が返され、動作するときにのみ表示されます。

db.delete("tablename","id=?",new String[]{"1"}); 
+0

"db.delete(" note.db "、" 'positionInt' "、null);"に変更しました。アプリは死んでいる。第2位と第3位に入れるべきことを教えてもらえますか?(「ポジション」とヌルの代わりに)わからない –

+0

@DahnHwang私は自分の答えを更新しました。 –

関連する問題