2016-04-27 8 views
0

私は自分のデータベースにバージョン管理を実装しようとしています。私は、次のコードを持っている: SQLiteデータベースが変更されたときに、そのデータベースが削除されるのはなぜですか?

if (File.Exists (dbPath)) { 
    database = new SQLiteConnection(dbPath); 
    dbVersion = GetDatabaseVersion(); 
    if (dbVersion != DATABASE_VERSION) { 
     CreateDatabase(dbPath); 
     database = new SQLiteConnection(dbPath); 
     SetDatabaseVersion(DATABASE_VERSION); 
    } 
} else { 
     CreateDatabase(dbPath); 
     database = new SQLiteConnection(dbPath); 
     SetDatabaseVersion(DATABASE_VERSION); 
} 

私は予想通りFile.Exists (dbPath) falseを返し初めてのコードを実行

。アプリを停止してもう一度ビルドしてデプロイすると、 File.Exists (dbPath)は(期待どおり)trueを返し、バージョンがチェックされます。しかし、私はデータベース(バージョンではない)のエントリを変更し、再度ビルドしてデプロイします。 File.Exists (dbPath)はfalseを返します。だから私はsqliteファイルが変更されたときに削除されると思いますか?

私が達成したいのは、sqliteファイルが変更されてもバージョン番号が同じである場合、アプリケーションのデータベースは更新されないということです。バージョンが一致しない場合に限り、更新する必要があります。

(それは仕方によって、iOSのために完璧にこのように動作する)

誰も私を助けることができますか?

ありがとうございます。

+0

にこのボックスをチェックする必要があり、アプリを行いますアップデートがインストールされる前に、デバイスからアンインストールされることがありますか? – Levon

+0

おそらく。これをどうやってチェックするのですか?私はあなたがすでにアプリを持っている携帯電話にデプロイしたとき、アンインストールしたenの代わりに更新されたばかりだと思った。 –

+0

あなたはあなたがあなたのアプリケーションをアンインストールした後にあなたのデータが拭き取られているかどうかチェックすべきだと思います。 –

答えて

0

デバッガにアクセスすることができないと、何がうまくいかないのかを解答することは困難です。ただし、データベースの作成と更新の方法は、珍しく不必要に複雑に見えます。

public class MyDatabase extends SQLiteOpenHelper { 
    private static final int VERION = ...; 
    public MyDatabase(Context context) { 
     super(context, "mydatabasename", null, VERION); 
    } 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table..."); 
     ... 
    } 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, intNewVersion) { 
     db.execSQL("...") // whatever you have to change from one version to another 
    } 
} 

を使用することを検討する必要があります。これはデータベースファイルを失うことなく動作します。あなたは(データベース内のエントリを変更した後)は、第2の時間を構築し、展開するとき

+0

既存のデータベースをインポートする必要があります。あなたはそれが珍しいことは間違いありませんが、それは機能するので、私はそれをそのままにしておくと思います。データベースは私のクロスプラットホームプロジェクトのコア部分の一部であるため、iOS側にもサービスを提供する必要があります。たとえば、コンテキストとしてパラメータを設定することはできません。 –

0

あなたは、Visual Studio /ツール/オプション/ Xamarin/Androidの設定

Preserve data between deployments

+0

たとえば、ユーザーがPlayストアから自分のアプリを更新したときにデータが保持されますか? –

+0

はい。これはデフォルトでは設定されていないデバッグオプションです。 – Softlion

+0

私はそれを試しただけで何も変わらない。 –

関連する問題