2012-04-15 2 views
1

앱을 처음 실행할 때 테이블을 만들고 테이블에 일부 행을 입력하려고합니다. 이 일을 위해, 나는 코드의이 비트를 쓰고 그것을 잘 작동 :테이블에 둘 이상의 행을 입력하는 가장 쉬운 방법

  //Creating the table 
     db.execSQL(MRM_BOOKING_LOGIN_TABLE_CREATE);   
     //Setting the values in the table 
     ContentValues contentValuesLogin = new ContentValues(); 
     contentValuesLogin.put(USER_ID, "asdf"); 
     contentValuesLogin.put(PASSWORD, "1234"); 
     //Inserting a row in the table 
     db.insert(MRM_BOOKING_LOGIN_TABLE, null, contentValuesLogin); 

하지만 난 테이블에서 적어도 15-20 행을 입력합니다. 하나의 행을 삽입 한 후에 매번 ContentValues ​​객체를 지우거나 ContentValues의 다른 객체를 생성하고 새로 생성 된 테이블에 다른 행을 입력하는 것이 좋습니다. 이렇게하면 코드 줄이 많이 늘어납니다. 나는 같은 것을하기위한 다른 더 좋은 대안이있을 것이라고 확신한다. 당신은 ContentResolver.bulkInsert (Uri url, ContentValues[] values)를 사용하여 여러 행을 삽입 할 수 있습니다

감사합니다,

+0

내가 당신의 15 ~ 20 행 (사용자 ID 및 암호가 미리 알려져있다) 값을 하드 코딩 한하거나 다른 방법에 의해 생성된다고 가정 할 수 있습니까? 하드 코드 된 경우 리소스 문자열 배열을 사용하여 루프를 반복 할 수 있습니다. –

답변

2

db.insert을 통해 여러 레코드를 삽입하는 유일한 방법은 루프을 사용하는 것입니다. SQLite 트랜잭션과 함께 사용하면 처리 속도가 빨라집니다.

+0

시간에 대 한 db.insert 잊지, 같은 다른 작업을 할 말해 ... – user182944

+0

다음 ** DatabaseUtils.InsertHelper **를 사용합니다. 이것을 읽으십시오 http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/ – waqaslam

+0

좋습니다 나는 그것에 볼 것이다. 감사 – user182944

2

샘플 코드 :

try { 
      // open the database 
      db.beginTransaction(); 

      for (your objects) { 
       ContentValues cv = new ContentValues(); 
       cv.put(COL1, obj.p1); 
       cv.put(COL2, obj.p2); 
       //..... 

       long id = db.insertOrThrow(DATABASE_TABLE, COL_Id, cv); 
      } 

      db.setTransactionSuccessful(); 
} catch (Exception e) { 
      throw e; 
     } finally { 
      db.endTransaction(); 
      // close database 
     } 
관련 문제