2012-06-13 39 views
1

我有以下表定義:的SQLite在Android的唯一約束不工作

CREATE TABLE arbol32 (_id integer primary key autoincrement, ID integer, NIVEL integer, TEXTO text, ID_ORIG integer, CONTRATO integer, CODALMTESTOR text, CENTRO text, SECUEN text, DNIACUM text, UNIQUE(ID)); 

而下面的一段代碼被稱爲不止一次:

if(sArbol32.getPropertyCount()>0) 
      { 
       cargarAuxiliares=true;  
        Arbol32BE[] arbol32=WSManager.RetrieveArbol32FromSoap(sArbol32); 
        arbol32Table.open(); 
        arbol32Table.beginTransaction(); 
        for(int i=0;i<sArbol32.getPropertyCount();i++){ 
         arbol32Table.create(arbol32[i].id, arbol32[i].nivel, arbol32[i].texto, arbol32[i].id_orig, 
              arbol32[i].contrato, arbol32[i].codalmtestor, arbol32[i].centro,arbol32[i].secuen,arbol32[i].dniacum); 
        } 
        arbol32Table.setTransactionSuccessful(); 
        arbol32Table.endTransaction(); 
        arbol32Table.close(); 
      } 

最後,這是創建方法的代碼:

public long create(int id,int nivel,String texto,int id_orig,int contrato,String codalmtestor,String centro,String secuen, String dniacum) { 
Log.i(TAG, "Inserting record..."); 
ContentValues initialValues = new ContentValues(); 
//initialValues.put(KEY_ROWID, id); 
initialValues.put(KEY_ID,id); 
initialValues.put(KEY_NIVEL,nivel); 
initialValues.put(KEY_TEXTO,texto); 
initialValues.put(KEY_ID_ORIG,id_orig); 
initialValues.put(KEY_CONTRATO,contrato); 
initialValues.put(KEY_CODALMTESTOR,codalmtestor); 
initialValues.put(KEY_CENTRO,centro); 
initialValues.put(KEY_SECUEN,secuen); 
initialValues.put(KEY_DNIACUM,dniacum); 
return mDb.insert(DATABASE_TABLE, null, initialValues); 

}

我的問題是,雖然指定了UNIQUE,但插入了具有相同ID的重複行。我做錯了什麼?

回答

0

我的錯誤...我正在測試一個較舊的數據庫。我在做什麼就好了!