2017-11-16 15 views
0

フォーラムアプリケーションを作成していますが、現在スレッドを削除するとすべてのスレッドが削除されます。
UserId == ThreadIdであるかどうかを確認する方法やクエリはありますか?2つの項目が等しいかどうかを確認

私の現在のコード:

public void deleteThread() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    // Delete All Rows 
    db.delete(TABLE_THREAD, null, null); 
    db.close(); 

    Log.d(TAG, "Deleted all Thread info from sqlite"); 
} 
+0

あなたはどういう意味ですか? – Stultuske

+1

'UserId == ThreadId'のチェックはどのような目的のために使われますか?特定の 'ThreadId'を削除するほうが理にかなっていませんか? 'db.delete'メソッドでは、2番目と3番目のパラメータとしてWhere句を指定する必要があります。参照:[SQLiteDatabaseの削除メソッド](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#delete(java.lang.String、%20java.lang.String、%20java.lang。文字列[])) –

+0

あなたのコードは、個々の項目に対して 'delete'クエリを絞っていないので、あなたが記述したものとまったく同じです。どんな種類のIDもメソッドに渡していないので、あなたを驚かせるべきではありません。 – kryger

答えて

1

あなたはDBテーブル内のすべてのエントリのサブセットに削除の範囲を絞り込むためにwell-documented delete methodに正しい値を渡す必要があります。

public void deleteThreadById(String threadId) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String whereClause = "threadId = " + threadId; 
    db.delete(TABLE_THREAD, whereClause, null); 
    db.close(); 
} 

彼らのuserIdを経由して、特定のユーザーのすべてのスレッドを削除すると似ていますが、はおそらくはフォーラムソフトウェアに意味がありません。


これは、SQLは、一般的に動作し、それはあなたが非常に基本をよく理解せずに開発を始めた少し怖いです方法です。

+0

私は実際にこのような方法でyesturdayを修正しました。しかし、私はちょうど悪い例をしたと思う、srryみんな、しかし感謝。そして、私はSQLについてもっと詳しく読むことになるでしょう、私はしばらくの間SQLと一緒に働いています。ありがとう – Ajmoo

1

このようなものです。

何かこれらの行は、データベースにクエリを実行して、パラメータに一致する列を持つ特定の行を検索します。

たとえば、名前列が「Hello World」の行を削除するには、次のように入力します。

deleteThread("Hello World"); 
関連する問題