這是一個SQLiteAndroid嵌入的資料庫測試程式。
在添加的時候,每次啟動程式都會自己再次插入一遍(不能做到資料庫有的資訊不插入,id是自動生成的)
上網找了一下方法說是添加什麼觸發器(話說SQL的觸發器還可以,android的,額,這就不用說了)。
那隻好插入的時候再次查找一遍,判斷是否是第一次插入。
好了這個時候就出現問題了。
代碼如下:
/**
* 儲存資料
* flag判斷資料是否以前插入過
* @param appInfos
*/
public void save(ArrayList<Country> appInfos) {
drop();
Cursor cursor1 = null;
boolean flag = false;
try {
db = this.open();
if (appInfos == null) {
return;
}
for (Country appInfo : appInfos) {
flag = false;
cursor1 = db.rawQuery("select * from " + DBHelper.SORT_DB
+ " where name='" + appInfo.name + "'", null);
if (cursor1 != null && cursor1.moveToFirst()){
flag = true;
}
if(!flag){
db.execSQL("insert into " + DBHelper.SORT_DB
+ "(name,target) values(?,?)", new Object[] {
appInfo.name, appInfo.target });
}
cursor1.close();
}
} finally {
if (db != null)
db.close();
}
}
開始的時候判斷是放在外邊(另外一個函數),在網上找說是使用遊标時一定要關閉。
好吧以為打開了再次調用函數會出現沖突,那就放在裡面。