-
sqllite 트랜잭션 적용과거...../개발일지 2010. 8. 17. 09:57
별다른 부분은 없다
노트패드 예제를 참고로 만든거지만..다른점은 테이블 하나씩만 생성하는것이 아니라 테이블을 다중으로 동시에 생성됬다가
버젼업 할시 동시에 삭제되도록 만든것이다.
밑에 소스는 쿼리문을 만들시 '/n'을 구분자로 하여 쿼리문을 구분한후 실행하도록 만들었다.
@Override
public void onCreate(SQLiteDatabase db) {String[] sql = DATABASE_CREATE.split("\n");
db.beginTransaction();
try{
execMultipleSQL(db,sql);
db.setTransactionSuccessful();
}catch(SQLException e){
Log.e("error creating",e.toString());
throw e;
}finally{
db.endTransaction();
}
}@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
String[] sql = DATABASE_DELETE.split("\n");
db.beginTransaction();
try{
execMultipleSQL(db,sql);
db.setTransactionSuccessful();
}catch(SQLException e){
Log.e("error delete",e.toString());
throw e;
}finally{
db.endTransaction();
}
onCreate(db);
}
private void execMultipleSQL(SQLiteDatabase db, String[] sql){
for( String s : sql )
if (s.trim().length()>0)
db.execSQL(s);
}