0

私はこのSQLクエリを持っています

bd.replace(TABLE,null,cv);

ここで、cv は {_id=1,column1=x,column3=z} です。// column2 がないことに注意してください

TABLE には次のスキームがあります。

_id (主キーとして)| column1 (テキストとして)| column2 (テキストとして)| column3 (テキストとして)

クエリを実行する前に、次の値 (_id=1,column1=a,column2=b,column3=c) を持つレジスタ _id=1 を既に持っているので、クエリを実行した後に (_id=1,column1=) を取得します。 x,column2=null,column3=z) column2 を b に保持しなかったのはなぜですか?

この値を以前と同じように維持する方法を知っている人はいますか?

重要: 存在しない場合に備えて新しい行を挿入する必要があるため、置換を使用します。

前もって感謝します

4

1 に答える 1

0

解決:

私は何が起こっているのか知っています。

sqliteのドキュメントによると、最初に行を更新すると、column2がnullに等しいため、行が削除されます。

私もこの散歩をしました:

long id=bd.insert(TABLE, null,cv);
if(id==-1) {
    int idrow=(Integer) cv.get("_id");
    cv.remove("_id");
    bd.update(TABLE,cv,"_id=?",new String[]{String.valueOf(idrow)});
}

誰かがもっとよく知っているなら、この投稿を再生してください。

ありがとう

于 2012-12-27T15:10:55.030 に答える