2
私はSQLiteデータベースに次のように作成:アンドロイドデータベース:IllegalStateExceptionが問題
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE_SETTINGS + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " INTEGER UNIQUE not null, " +
VALUE + " TEXT not null);" +
"create table " + DATABASE_TABLE_RECORDINGS + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
RECORDING_FILENAME + " TEXT UNIQUE NOT NULL, " +
RECORDING_TITLE + " TEXT NOT NULL, " +
RECORDING_TAGS + " TEXT, " +
RECORDING_LOCATION + " TEXT, " +
RECORDING_TIME + " TEXT);";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
...
}
を私は次のメソッドを呼び出して新しいエントリを保存しよう:
public long insertRecordingInfo(String filename, String title, String tags, int privacyLevel, String location, String recordingTime){
long res = -1;
ContentValues recordingInfoParameters = new ContentValues();
recordingInfoParameters.put(RECORDING_FILENAME, filename);
recordingInfoParameters.put(RECORDING_TITLE, title);
recordingInfoParameters.put(RECORDING_TAGS, tags);
recordingInfoParameters.put(RECORDING_PRIVACY_LEVEL, privacyLevel);
recordingInfoParameters.put(RECORDING_LOCATION, location);
recordingInfoParameters.put(RECORDING_TIME, recordingTime);
if(db != null){
res = db.insert(DATABASE_TABLE_RECORDINGS, null, recordingInfoParameters);
}
return res;
}
けどdb.insert( )は-1を返します(新しいエントリは格納されません)、IllegalStateExceptionを返します。
java.lang.IllegalStateException: /data/data/dev.client.android/databases/clientDB.db SQLiteDatabase created and never closed
ここに何が間違っているのか、それをどう修正することができるのかを知るreferenceから