0

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

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

*在这里叹息noobness。谢谢。

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

4

1 回答 1

0
  • 每次打开应用程序时,SQLite 数据库都不会做任何事情。只有当您引用它并使用 getWritableDatabase 或 getReadableDatabase 时才会发生某些事情。

  • 同样,这里也没有任何反应。SQLite 应该以打开、运行和关闭查询的方式使用。这可以防止数据库在另一个线程尝试使用它时被线程锁定。

  • 您关闭 sqlite 连接以释放线程并解除数据库锁定。如果您尝试同时使用两个单独的 sqlite 助手,您将收到一个锁定数据库错误,因为一次只有 1 个线程可以访问数据库。您不想保持该连接打开。

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

于 2013-06-11T02:13:11.297 回答