2012-05-14 18 views
0

私はアンドロイドC2DMを使用してアプリケーションを開発しています。 sqlite3は私のバックエンドです。すべてが正常に動作していますが、sqlite3に関するパフォーマンス上の問題があります。だから私の質問は 'dvm(dalvik vertiual machine)はdbに関連するコードを一度だけ実行する必要があります。 dbが作成されたため、連続実行中にdvmは(db)コードを使用しないでください。Sqliteコードは一度だけ実行する必要があります

具体的には、私のアプリケーションは、自分のアプリケーションを持つすべての携帯電話にmsgを送信します。したがって、クライアント側のアプリケーションがmsgを受け取ると、dvmはこのコードを実行しません。 SQLiteDatabase db;

//use tat ref to open or create a table 
    db = openOrCreateDatabase("/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 

    try 
    { 

     //initialsiging a query with all the table fields 
     final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4(" 
       + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
       + "msg TEXT not null," 
       + "msg_time INTEGER not null," 
       + "msg_status INTEGER not null);"; 

     //execute the above query 
     db.execSQL(CREATE_TABLE_CONTAIN); 

いつもmsgがこのコードを実行するため、このコードが実行されます。だから私はこれを避けたい、私は私のメッセージを伝えたと思う。どんな助けでも大歓迎です。あなたが求めている何

おかげで、

TheIlliterate

+0

私の答えはあなたを助けましたか?もしそうなら、あなたはそれを受け入れるべきです(チェックマークをクリックしてください)。そうでない場合は、私たちに連絡して問題を解決することができます。 – Barak

答えて

0

は、通常の(そして好ましい)の利用ケースです。

Androidには、これを行うためのいくつかのクラスとメソッドがあります。

基本的には、DBを管理するヘルパークラスを作成します。データベースの作成とアップグレードを処理するonCreateメソッドとonUpgradeメソッドをオーバーライドするという点で、SQLiteOpenHelperを継承するクラスがクラス内にあります。その後、ヘルパークラス内のDBに関連するすべての関数(レコードの追加/削除/更新など)を処理するために、ヘルパクラス内の他のメソッドを作成します(ただし、SQLiteOpenHelper拡張クラスは使用しないでください)。

いくつかの例とチュートリアルがあります。良いものはhereです。

幸運

+0

ちょっと、私はそのチュートリアルを見に行きましたが、そこではそのdbコードが1回または新しいメッセージが受信されるたびに実行されることに言及していませんでした。 – TheIlliterate

+0

このクラスでは、onCreate()メソッドとonUpgrade()メソッドをオーバーライドする必要があります。 データベースが存在しない場合は、フレームワークによってonCreate()が呼び出されます。最後のビットに注意してください:**データベースが存在しない場合**。だからあなたのDBを作成するのは1回だけです。 – Barak

+0

こんにちはバラク、私はそれを得た。しかし、私の質問は、 dvmはdbコードを1度だけ実行する必要があり、msgが受信されるたびには実行されません。 – TheIlliterate

関連する問題