2012-03-21 1 views
0

나는 databasehelper와 아래에 주어진 코드를 가진 활동을 가지고있다. 내가 가지고있는 문제는 응용 프로그램을 실행할 때마다 이미 삽입 된 값을 다시 삽입한다는 것입니다. 나는 이것을 원하지 않는다. 나는 som help를 좋아할 것이다.내 데이터베이스가 이미 수동으로 삽입 한 항목을 다시 삽입하는 것을 중단하려면 어떻게합니까?

try { 
     db.open(); 
     long id; 

     id=db.insertTitle("0470285818", "C# programmer", "wrox"); 
     id=db.insertTitle("0907865", "Professional Windows", "wrox"); 


     Cursor c=db.getAllTitles();//using getTitle to get a particular row 

     if(c.moveToFirst()){ 
      do{ 
       DisplayTitle(c); 

      }while(c.moveToNext()); 
     }/*else Toast.makeText(this, "No title found", Use this when using getTitle 
       Toast.LENGTH_LONG).show();*/ 
     db.close(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

inserttitle 방법에 croped DBhelper 클래스

private static final String DATABASE_CREATE= 
      "create table if not exists titles (_id integer primary key autoincrement, " 
      +"isbn text not null, title text not null, " 
        +"publisher text not null)"; 
private final Context context; 
private DatabaseHelper DBHelper; 
private SQLiteDatabase db; 

public DBAdapter(Context ctx){ 
this.context=ctx; 
DBHelper=new DatabaseHelper(context); 
} 
private static class DatabaseHelper extends SQLiteOpenHelper{ 
DatabaseHelper(Context context){ 
    super(context,DATABASE_NAME,null,DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(DATABASE_CREATE); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    Log.w(TAG, "Upgrading database from version "+oldVersion+" to "+newVersion+" which will distroy all old data"); 
    db.execSQL("DROP TABLE IF EXISTS titles"); 
    onCreate(db); 


} 
} 
public DBAdapter open()throws SQLException{ 
db=DBHelper.getWritableDatabase(); 
return this; 

} 
public void close(){ 
DBHelper.close(); 
} 
public long insertTitle(String isbn,String title,String publisher){ 
ContentValues initialValues =new ContentValues(); 
initialValues.put(KEY_ISBN, isbn); 
initialValues.put(KEY_TITLE, title); 
initialValues.put(KEY_PUBLISHER, publisher); 

return db.insertOrThrow(DATABASE_TABLE, null, initialValues); 
} 
    public boolean deleteTitle(long rowid){ 
return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowid, null)>0; 
    } 
    public Cursor getAllTitles() 
{ 
return db.query(DATABASE_TABLE, new String[] { 
     KEY_ROWID, 
     KEY_ISBN, 
     KEY_TITLE, 
     KEY_PUBLISHER}, 
     null, 
     null, 
     null, 
     null, 
     null); 
} 
public Cursor getTitle(long rowid)throws SQLException{ 
Cursor mCursor=db.query(DATABASE_TABLE, new String[]{ 
     KEY_ROWID,KEY_ISBN,KEY_TITLE,KEY_PUBLISHER 
}, KEY_ROWID+"="+rowid, null, null, null, null); 

if(mCursor!=null){ 
    mCursor.moveToFirst(); 
} 

return mCursor; 

} 
    public boolean updateTitle(long rowid,String isbn,String title,String publisher){ 

ContentValues args=new ContentValues(); 
args.put(KEY_ISBN, isbn); 
args.put(KEY_TITLE, title); 
args.put(KEY_PUBLISHER, publisher); 

return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowid, null)>0; 

} 
} 

답변

1

당신은 직접 SqliteOpenHelper 구현의 onCreate(SQLiteDatabase db) 방법에 값을 삽입해야합니다 :

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(DATABASE_CREATE); 
    String[] isbn = {"isbn1", "isbn2", "isbn3"}; 
    String[] title = {"title1", "title2", "title3"}; 
    String[] publisher = {"pub1", "pub2", "pub3"}; 
    for (int i = 0; i < isbn.length; i++) { 
     ContentValues initialValues =new ContentValues(); 
     initialValues.put(KEY_ISBN, isbn[i]); 
     initialValues.put(KEY_TITLE, title[i]); 
     initialValues.put(KEY_PUBLISHER, publisher[i]); 
     db.insertOrThrow(DATABASE_TABLE, null, initialValues); 
    } 
} 
0

당신은 조회 수 삽입을하기 전에 데이터베이스를 열고 내용이 이미 있는지 확인하십시오. 이 경우 다시 삽입하지 마십시오.

관련 문제