我有一个数据库助手和一个带有下面给出的代码的活动。我遇到的问题是,每次我运行应用程序时,它都会重新插入已经插入的值。我不希望这种情况发生。我很想得到帮助。
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();
}
DBhelper 类被裁剪为 inserttitle 方法
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;
}
}