在打开和关闭应用程序期间的Sqlite概念

时间:2013-06-11 01:39:26

标签: java android database sqlite

我尝试过在sqlite数据库中实现基本CRUD的不同教程。但我错过了关于如何在运行应用程序时创建和使用sqlite的基本概念。我只是在不了解基础知识的情况下实现了代码,我想这适用于每个初学者。我在寻找答案时尝试了不同的关键词,但似乎找不到真正的基础知识。你可能认为我没有足够的研究,但大多数讨论涉及sqlite的定义和样本代码。我不介意请分享您对sqlite的理解。

  1. 每次打开应用程序时,sqlite会发生什么?
  2. 当用户恢复应用时,sqlite会发生什么?
  3. 关闭sqlite连接的真正原因是,这会影响应用程序吗?
  4. 例如,应用程序菜单是从sqlite数据库动态创建的(数据库数据来自另一个外部数据库mysql),这会降低应用程序的速度吗?
  5. *叹息在这里。感谢。

    public DatabaseHandler(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        // Creating Tables
        @Override
        public void onCreate(SQLiteDatabase db) {
            String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
                    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                    + KEY_PH_NO + " TEXT" + ")";
            db.execSQL(CREATE_CONTACTS_TABLE);
        }
    
        // Upgrading database
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // Drop older table if existed
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
    
            // Create tables again
            onCreate(db);
        }
    

    附加代码:

    protected void onPause() {
            super.onPause();
            if (isFinishing()) {
                mCursor.close();
            }
        }
    
        protected void onDestroy() {
            super.onDestroy();
            mCursor.close();
        }
    

    http://www.vogella.com/articles/AndroidSQLite/article.html

1 个答案:

答案 0 :(得分:0)

  • 每次打开应用程序时,SQLite数据库都不会执行任何操作。只有在您引用它并使用getWritableDatabase或getReadableDatabase时才会发生某种情况。

  • 再一次,这里也没有任何事情发生。应该以打开,查询运行和关闭的方式使用SQLite。这使得数据库不会被线程锁定,而另一个线程尝试使用它。

  • 关闭sqlite连接以释放线程并锁定数据库。如果您尝试同时使用两个单独的sqlite帮助程序,则会出现锁定的数据库错误,因为一次只有一个线程可以访问数据库。你不想保持这种联系开放。

  • SQLite数据库根本不应该减慢应用程序的速度。您不能将它用作企业级数据库(只是没有功能)。您可以根据需要运行任意数量的查询,因为它只使用1个线程,只要结果不是很大,就不会出现性能问题。