2020年10月28日水曜日

[Android] "CREATE TABLE"する際にはcolumnを正しく設定しましょう

こんにちは、針山散策を今日もほのぼのと行います。


今回は、Androidでsqliteを使用していますが、


SQLiteDatabaseクラスを用いてinsert()実行した後に


query()するとハングしていました。


その対策をメモしておきます。


1. query()後にclose()メソッドを実行するようにしましょう。

2. SQLiteOpenHelperクラスを継承したクラス内で"CREATE TABLE"する際、

    COLUMNの数が登録しようとしている列合っているか確認しましょう。


1. query()後にclose()メソッドを実行するようにしましょう。

についてです。

こちらは、以下のように最後にclose()メソッドを実行して一度資源を解放しましょう。

    Cursor cursor = database.query(

       "Table_Name",

        new String[] {"column_1", "column_2", "column_3", "column_4", "column_5"},

       null,

       null,

       null,

       null,

       null

    );

    cursor.moveToFirst();    // カーソル行を先頭に

    cursor.moveToNext();    // カーソル行を進める

    ・・・                    // 処理

    cursor.close();           


2. SQLiteOpenHelperクラスを継承したクラス内で"CREATE TABLE"する際、

    COLUMNの数が登録しようとしている列合っているか確認しましょう。

についてです。

こちらは以下のように、列(column)の数を合わせておきましょう。ということです。


public class testHelper extends SQLiteOpenHelper {

private static final String SQL_CREATE =

   "CREATE TABLE " + Table_name + " (" +

           Database_id + " INTEGER PRIMARY KEY," +

           "column_1" + " TEXT," +

           "column_2" + " TEXT,"+

           "column_3" + " INTEGER,"+

           "column_4" + " INTEGER,"+

           "column_5" + " TEXT)";

@Override

public void onCreate(SQLiteDatabase sqLiteDatabase) {

sqLiteDatabase.execSQL( SQL_CREATE );

}


0 件のコメント:

コメントを投稿