2012-05-11 7 views
0

初めてのポスターとアンドロイドのルーキー。もしこれが間違っていたら謝罪してください...onclick経由でアンドロイドデータベースバージョンをインクリメントします。 (SQLiteOpenHelper)

現在のデータベースバージョン番号を取得してインクリメントし、アクティビティ内からSQLiteOpenHelperのコンストラクタに渡すことは可能ですか? (onclickのから呼び出された)

活動:

public void updatedb(){ 
    //pseudo-code next 2 comments 
    //int incVersion = getCurrentDBVersion();<==question here 
    //incVersion = incVersion + 1; 
    DatabaseHandler dbincrement = new DatabaseHandler(this, incVersion); 
} 

SQLiteOpenHelper拡張子:

public class DatabaseHandler extends SQLiteOpenHelper{ 
    public DatabaseHandler(Context context, int incVersion) { 
     super(context, DATABASE_NAME, null, incVersion); 
    } 
} 

答えて

1

はい、database versionを取得するには、このようなものを使用します。

DatabaseHandler dh = new DatabaseHandler(this); 
SQLiteDatabase db = dh.getWriteableDatabase(); 
int version = db.getVersion(); 
DatabaseHandler dhInc = new DatabaseHandler(this, version++); 
0

あなたが取得することはできませんあなたが最初にデータベースを開いていない限り、現在のdbバージョン番号。だからあなたの意図がインストールされたデータベースのバージョンを取得し、それを増やすことでしたら、私はサムがあなたの要求を満たすと信じていないよりも新しいバージョンでSQLiteOpenHelperコンストラクタを呼び出します。なぜここ

だ:

1)DatabaseHandlerコンストラクタの最初の行には、データベースのバージョンを提供し、SQLiteOpenHelper(スーパー)コンストラクタを呼び出す必要があります。
2)getWriteableDatabaseを呼び出すと、自動的にDatabaseHandlerのonOpenおよび/またはonUpgrade/onDowngradeメソッドが呼び出されます。どのonXXXXメソッドが呼び出されるかは、SQLiteOpenHelperがインストールされたデータベースのバージョンと、上記のコンストラクタの初期化で提供したバージョンとの比較によって決まります。

インストールされているデータベースのバージョンを最初に指定しなくても簡単に見つけることはできません。

関連する問題