2

SQLiteテーブルに挿入または更新する単一のSQLiteクエリが必要です。

MyTable:

  1. Id(主キーでnullではない)
  2. 名前
  3. 電話番号

ここに画像の説明を入力してください

予想されるクエリ:IDが存在しない場合は、新しい行を挿入する必要があります。既存の行の値が変更された場合は、複数の行を挿入するときに行を更新します。

編集1:

SQLiteエラー(エラーコード= 1)で複数の行を挿入しようとしたINSERTクエリを投稿しました。そのように「INSERTORREPLACE」を使ってみました。しかし、それはworking with Firfox SQLite Manager Not working with Android SQLiteです。

私はsDataBase.execSQL(query)このクエリを実行するために使用しました。

4

2 に答える 2

2

これを試して:

String sql = "INSERT OR REPLACE INTO MyTable (Name, PhoneNumber) VALUES (?,?)";
SQLiteStatement st = db.compileStatement(sql);

そして、書き込みまたは更新:

    public void writeOrUpdateData(ArrayList<MyClass> data) {
    try {

        db.beginTransaction();

        for(int i = 0; i < data.size(); i++) {

            st.clearBindings();
            st.bindLong(1, data.get(i).getName());
            st.bindString(2, data.get(i).getPhoneNumber);
            st.executeInsert();

        }

        db.setTransactionSuccessful();

    } 
    catch(Exception e) {} 
    finally {
        db.endTransaction();
    }
}

このようにして、一括挿入/更新を取得します。これは非常に効率的です。

于 2013-03-26T16:10:35.623 に答える
0

FirefoxSQLiteManagerでのみ主キーを使用してデータベースを作成しました。私はAndroidのSQLiteデータベースでこれを見逃しました。今私は持っていcreated database with PRIMARY KEY and NOT NULLます。現在正常に動作しています

于 2013-03-27T11:35:23.573 に答える