0

sqlite データベースで基本的な CRUDS を実装するさまざまなチュートリアルを試しました。しかし、アプリケーションの実行中に sqlite がどのように作成され、使用されるかについての基本的な概念がありません。基本を理解せずにコードを実装しただけで、これはすべての初心者に当てはまると思います。答えを見つけるためにさまざまなキーワードを試しましたが、本当の基本を見つけることができないようです。よく調べていないと思われるかもしれませんが、議論のほとんどは sqlite の定義とサンプル コードに関するものです。sqlite についての理解を共有してください。

  1. アプリケーションを開くたびに、sqlite はどうなりますか?
  2. ユーザーがアプリを再開すると、sqlite はどうなりますか?
  3. sqlite 接続を閉じる本当の理由は、アプリケーションに影響しますか?
  4. たとえば、アプリ メニューは sqlite データベース (データベース データは別の外部データベース mysql からのもの) から動的に作成されますが、これはアプリケーションの速度を低下させますか?

*ここでため息をつきます。ありがとう。

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 接続を閉じてスレッドを解放し、データベースのロックを解除します。2 つの別個の sqlite ヘルパーを同時に使用しようとすると、一度に 1 つのスレッドしかデータベースにアクセスできないため、ロックされたデータベース エラーが発生します。その接続を開いたままにしたくありません。

  • SQLite データベースがアプリの速度を低下させることはまったくありません。エンタープライズ レベルのデータベースとして使用することはできません (機能がないだけです)。1 つのスレッドしか使用しないため、クエリをいくつでも実行できます。また、結果が大きくない限り、パフォーマンスの問題は発生しません。

于 2013-06-11T02:13:11.297 に答える