sql >> データベース >  >> RDS >> SQLite

IDを使用して複数の行を削除しますか?

    whereArgsとして単一の文字列を指定する場合 、次のように記述したかのように、SQLコマンドに1つの文字列が含まれることになります。

    ... WHERE _id IN ('1,2,42')
    

    これにより、各_idが比較されます 値に対する値'1,2,42' 、もちろん機能しません。

    3つのパラメーターマーカーを使用し、whereArgsに3つの文字列を指定した場合 配列の場合、次のように3つの文字列になります。

    ... WHERE _id in ('1','2','42')
    

    これは、_idの場合にのみ機能します 列には整数のアフィニティがあります。これは、INTEGER PRIMARY KEYとして宣言された列には当てはまりますが、一般的な場合には当てはまりません。

    AndroidデータベースAPIでは、クエリパラメータに文字列以外のタイプを含めることはできません。整数を使用する場合は、整数を直接挿入する必要があります(ianhanniballakeの回答のように):

    String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";
    


    1. SQLite Sum()で個別の値だけを追加する方法

    2. ポスト/プレスクリプトフックを使用した高度なフェイルオーバー

    3. グループ化された実行中のMAX(またはMIN)の維持

    4. ASP.NETコアアプリケーションをSQLServerのローカルインスタンスに接続する