ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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);
         }


Designed by Tistory.