Sqlite代码只能执行一次

时间:2012-05-14 05:56:45

标签: android sqlite android-c2dm

我正在使用Android C2DM开发一个应用程序。 sqlite3是我的后端。一切都工作得很好,但我对sqlite3的性能问题感到震惊。所以我的问题是'我可以将数据库代码放在只执行一次的地方,即dvm(dalvik vertiual machine)应该只执行一次与db有关的代码;在连续运行期间,dvm不应该通过(db)代码,因为已经创建了db。

更具体地说,我的应用程序将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

1 个答案:

答案 0 :(得分:0)

您要问的是正常(和首选)用例。

Android有几个类和方法可以做到这一点。

您基本上创建了一个帮助程序类来管理数据库,它将在其中包含一个扩展SQLiteOpenHelper的类,因为您可以覆盖onCreate和onUpgrade方法来处理数据库的创建和升级。然后创建其他方法(在辅助类中但在SQLiteOpenHelper扩展类之外)以处理与辅助类中的DB相关的所有函数(例如添加/删除/更新记录)是正常的。

有几个示例和教程浮动。一个好的是here

祝你好运