こんにちは、針山散策を今日もほのぼのと行います。
今回は、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 );
}