0

私はSQLITEをDBとして使用するAndroid2.3.3アプリケーションに取り組んでいます。現在、sqliteの内部ROWIDを使用して行を更新し、データを取得しています。最近、内部ROWIDが行に対して変更されることがあることがわかりました。この理由はわかりません。問題は、後で更新操作を実行するためにこのROWIDをキャッシュしていることです。したがって、ROWIDが変更された場合、間違った行を更新している可能性があります。

これには2つの解決策があると思います。

(1)内部のROWIDが変更されないようにします(これを達成する方法がわかりません)。また、誰かがこのROWIDの変更の原因を教えてもらえますか?

(2)INTEGER PRIMARY KEY列を定義し、それをROWIDとして使用します。

乱暴な変化を防ぐことが可能かどうか私に知らせてください、さもなければ私は2番目の解決策を採用します。

ありがとう!

4

2 に答える 2

1

行 ID には INTEGER PRIMARY KEY を使用する必要があります。

現在使用しているテーブル定義を投稿できますか? 使用している値は、a) 変更するか、b) 奇妙な方法で定義しない限り、変更すべきではありません。

于 2012-04-03T19:02:31.527 に答える
0

あなたのアプリにはDBを圧縮するプロセス(真空)があると思います。圧縮が実行される前に削除がある場合、これにより行IDが変更される可能性があります

于 2012-04-04T05:08:43.207 に答える