[Android]アップデートでデータが消えますか?

763 views
Skip to first unread message

asaka

unread,
Mar 26, 2010, 3:53:29 AM3/26/10
to 日本Androidの会
お世話になります。

ユーザがアプリのアップデートを行った場合、
データが消失しますでしょうか?

データの情報(eg 画像データのpath等)をdatabaseで
管理しています。

アプリのアップデートを行う場合アンインストール行ってから
インストールする方法にてアップデートを行うのでしょうか?
そうだとしたら、databaseも消えてしまうのではないでしょうか?

ご教授よろしくお願いいたします。

Tetsuya Ishida

unread,
Mar 26, 2010, 6:09:08 AM3/26/10
to android-g...@googlegroups.com
asaka様

お世話になります。石田(T)@福岡県と申します。

私も最初のアップデート時には不安でしたが大丈夫でした。
アップデートの仕組みを詳しく知っている訳ではありませんが、
アップデート後、端末内部メモリに持っていたDatabaseは
アップデート前の状態を保持していました。

「画像データのpath等」の部分が何か特別な意味を含んでいる
のかどうかは、すみませんが分かりませんでしたが、新版を
公開する前に下記の手順でご確認されてはいかがでしょうか。

1)マーケットに公開している現版をインストールした状態で
DBにそれなりのデータを保存する

2)新版のapkをUSB経由でSDカードに保存する

3)「OI File Manager」等のアプリで上記2)のapkをインストール
する。

4)Databaseがインストール前の状態と同じかを確認する。

以上

2010年3月26日16:53 asaka <beny...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

Tetsuya Ishida

unread,
Mar 26, 2010, 7:01:35 AM3/26/10
to android-g...@googlegroups.com
asaka様

石田(T)@福岡県です。
すみません補足です。

前述の4)の後に再度現版に戻しておかないと正規に新版を
マーケットからアップデートする体験ができなくなってしまうと思います。
(既に新版がインストール済と認識される為)

2010年3月26日19:09 Tetsuya Ishida <t.i...@gmail.com>:

mosaki4

unread,
Mar 26, 2010, 10:49:52 AM3/26/10
to android-g...@googlegroups.com
大崎といいます

SQLiteOpenHelper を使われている場合は
コンストラクタで指定するバージョン番号によって動作が変わるようです

バージョンがそのままなら変化なし

バージョンをあげれば
onUpgrade が実行されるのでメソッド内でバージョンごとのアップデート時の動作が記述できます
(たとえばカラムを1つ追加とか)
簡単なのは一旦削除(DROP TABLE)して onCreate を呼ぶことです。


2010年3月26日16:53 asaka <beny...@gmail.com>:

asaka

unread,
Mar 28, 2010, 9:58:50 PM3/28/10
to 日本Androidの会
石田様

ご教授いただいた方法で試してみたところ
DBのバージョンが変わらない限りデータは
削除されていませんでした。

ご返答どうもありがとうございました。

On 3月26日, 午後8:01, Tetsuya Ishida <t.in...@gmail.com> wrote:
> asaka様
>
> 石田(T)@福岡県です。
> すみません補足です。
>
> 前述の4)の後に再度現版に戻しておかないと正規に新版を
> マーケットからアップデートする体験ができなくなってしまうと思います。
> (既に新版がインストール済と認識される為)
>

> 2010年3月26日19:09 Tetsuya Ishida <t.in...@gmail.com>:


>
>
>
> > asaka様
>
> > お世話になります。石田(T)@福岡県と申します。
>
> > 私も最初のアップデート時には不安でしたが大丈夫でした。
> > アップデートの仕組みを詳しく知っている訳ではありませんが、
> > アップデート後、端末内部メモリに持っていたDatabaseは
> > アップデート前の状態を保持していました。
>
> > 「画像データのpath等」の部分が何か特別な意味を含んでいる
> > のかどうかは、すみませんが分かりませんでしたが、新版を
> > 公開する前に下記の手順でご確認されてはいかがでしょうか。
>
> > 1)マーケットに公開している現版をインストールした状態で
> > DBにそれなりのデータを保存する
>
> > 2)新版のapkをUSB経由でSDカードに保存する
>
> > 3)「OI File Manager」等のアプリで上記2)のapkをインストール
> > する。
>
> > 4)Databaseがインストール前の状態と同じかを確認する。
>
> > 以上
>

> > 2010年3月26日16:53 asaka <beny0...@gmail.com>:


> >> お世話になります。
>
> >> ユーザがアプリのアップデートを行った場合、
> >> データが消失しますでしょうか?
>
> >> データの情報(eg 画像データのpath等)をdatabaseで
> >> 管理しています。
>
> >> アプリのアップデートを行う場合アンインストール行ってから
> >> インストールする方法にてアップデートを行うのでしょうか?
> >> そうだとしたら、databaseも消えてしまうのではないでしょうか?
>
> >> ご教授よろしくお願いいたします。
>
> >> --
> >> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> >> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> >> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。

> >> 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

asaka

unread,
Mar 28, 2010, 10:07:12 PM3/28/10
to 日本Androidの会
大崎様

ご返答どうもありがとうございます。

DBのバージョンが変わる場合、ユーザが
アップデートを行おうとするとDBが削除されることに
なりますね。

とても勉強になりました。ありがとうございました。

On 3月26日, 午後11:49, mosaki4 <mosa...@gmail.com> wrote:
> 大崎といいます
>
> SQLiteOpenHelper を使われている場合は
> コンストラクタで指定するバージョン番号によって動作が変わるようです
>
> バージョンがそのままなら変化なし
>
> バージョンをあげれば
> onUpgrade が実行されるのでメソッド内でバージョンごとのアップデート時の動作が記述できます
> (たとえばカラムを1つ追加とか)
> 簡単なのは一旦削除(DROP TABLE)して onCreate を呼ぶことです。
>

> 2010年3月26日16:53 asaka <beny0...@gmail.com>:


>
>
>
> > お世話になります。
>
> > ユーザがアプリのアップデートを行った場合、
> > データが消失しますでしょうか?
>
> > データの情報(eg 画像データのpath等)をdatabaseで
> > 管理しています。
>
> > アプリのアップデートを行う場合アンインストール行ってから
> > インストールする方法にてアップデートを行うのでしょうか?
> > そうだとしたら、databaseも消えてしまうのではないでしょうか?
>
> > ご教授よろしくお願いいたします。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro-up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。

Lewske Wada

unread,
Mar 28, 2010, 10:34:03 PM3/28/10
to android-g...@googlegroups.com
asaka wrote:
> ご返答どうもありがとうございます。
> DBのバージョンが変わる場合、ユーザが
> アップデートを行おうとするとDBが削除されることになりますね。
>

........

何も記述しなければ変わらないと言ってると思いますが.

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
if (newVersion >= n) {
db.execSQL(
"ALTER TABLE " + TABLE_NAME
+ " ADD COLUMN " + COLUMN_NAME + " VARCHAR"
+ ";"
);
}
}

Ryu

kouka sou

unread,
Mar 28, 2010, 10:45:17 PM3/28/10
to android-g...@googlegroups.com
Ryu様
 
削除せず、ALTERコマンドを使えば既存データが
消えないとということですね。
 
了解しました。どうもありがとうございました。


 
2010年3月29日11:34 Lewske Wada <r...@run.sh>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

egg

unread,
Mar 28, 2010, 10:51:20 PM3/28/10
to android-g...@googlegroups.com
asakaさん

江川です。

> DBのバージョンが変わる場合、ユーザが
> アップデートを行おうとするとDBが削除されることに
> なりますね。

本件ですが、DBのバージョンが変わった際にdrop -> createした場合は
そのようになりますが、通常は何も行われません。古いDBのままで動作し、
アプリケーションが新しいDBの形式を想定した命令を発行した時点で
例外を出します。
みなさまが書いて下さっている通り、onUpgradeでDDLなどを発行してDBの変更を
行う事ができます。ただし、ユーザーは頻繁にアプリをアップデートしている人ばかり
ではない(どのバージョンのアプリを使っているかわからない)という点は、考慮する
必要があろうかと思います。
例えば、最新のDBのバージョンが3だとした場合
・新規インストール
・1から3へアップデート
・2から3へアップデート
の3つのバリエーションがあります。

私はこのような形で、段階的にDDLを適用しています。


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

if (oldVersion <= 1) {
updateDatabase1To2(db);
}
if (oldVersion <= 2) {
updateDatabase2To3(db);
}
}

以上です。よろしくお願いします。

------------------------------------------
EGAWA Takashi

2010年3月29日11:07 asaka <beny...@gmail.com>:

asaka

unread,
Mar 28, 2010, 11:06:18 PM3/28/10
to 日本Androidの会
江川様

良く分かりました。おかげ様でとてもすっきりした気分です。
ありがとうございました

> 2010年3月29日11:07 asaka <beny0...@gmail.com>:

> >> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro--up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。

Reply all
Reply to author
Forward
0 new messages