2012-11-19 4 views
3
public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + DATABASE_TABLE_COURSES + " (" 
       + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " 
       + KEY_COURSE_ID + " TEXT NOT NULL, " 
       + KEY_COURSE_TITLE + " TEXT NOT NULL, " 
       + KEY_COURSE_CNUMBER + " TEXT NOT NULL, " 
       + KEY_COURSE_SUBJECT + " TEXT NOT NULL, " 
       + KEY_COURSE_DAYS + " TEXT NOT NULL, " 
       + KEY_COURSE_START_TIME + " TEXT NOT NULL, " 
       + KEY_COURSE_END_TIME + " TEXT NOT NULL, " 
       + KEY_COURSE_PROFESSOR + " TEXT NOT NULL, " 
       + KEY_COURSE_BUILDING + " TEXT NOT NULL, " 
       + KEY_COURSE_ROOM_NUMBER + " TEXT NOT NULL);"); 

course_id가 이미 테이블에 존재하는지 확인한 다음 다른 항목을 만들지 않으려 고합니다. 필드가 일반적으로 존재하거나하지 않을 경우 감사Android SQlite에서 데이터베이스의 값이 이미 존재하는지 확인하려면 어떻게해야합니까?

+0

KEY_COURSE_ID를 Unique Constraint로 설정하면 중복 된 항목을 삽입 할 수 없습니다. – Lucifer

답변

4

확인하려면

Cursor cur1=db.query("database_table_courses", "course_id=id_u_wanttocheck", null, null, null, null, null); 
     cur1.moveToLast(); 
     int count1=cur1.getCount(); 
     if(count1==0) 
     { 
      //course id not present 

     } 
     else 
     { 
     //course id present 
     } 


을 아니면 을 Course_ID에 (가) 테이블에서 반복 결코 될하려는 경우, 당신은 기본 키로 그것을 설정할 수 있습니다 기본 키 태그를 row_no에서 제거하십시오. 이렇게하면 새 행을 삽입하기 만하면됩니다. course_id가 alreday 인 경우 삽입하지 않고 예외 (SQLException)를 던지면 catch하고 원하는 것을 수행 할 수 있습니다.

+0

Ok. Excel 시트에서 데이터를 가져와 내 활동 중 하나에서 올바르게 구문 분석하고 있습니다. 활동이 다시 시작될 때 항목이 중복되지 않게하려면 어떻게합니까? 이것은 액티비티의 onCreate 메소드에서 발생합니다 –

+0

@sukhpunjabi : if (count1 == 0) 블록에 항목을 만드는 코드를 넣으십시오. – Ashwin

+0

@Ashwin db.query에서 오류가 발생했습니다 :'잘못된 두 번째 인자 유형. 발견 : 'java.lang.String', 필수 : ​​'java.lang.String []'' 'SQLException'을 사용하여 수행하는 방법을 게시 할 수 있습니까? 감사 – Beginner

관련 문제