2014-12-10 37 views
0

我用下面的代碼使用批量插入的Android SQLite的SQLite的綁定插入語句拋出錯誤具有獨特的鍵

    String sql = "INSERT INTO "+ SQL_DATABASE_GLOBALS.TEMPSORT_TABLE +" VALUES (?,?,?,?,?,?,?,?,?,?,?);"; 
        Log.d("Line", "1"); 
       SQLiteStatement statement = SQL_DATABASE_GLOBALS.SQL_DATABASE.compileStatement(sql); 
       Log.d("Line", "2"); 

       SQL_DATABASE_GLOBALS.SQL_DATABASE.beginTransaction(); 
       Log.d("Line", "3"); 

         statement.clearBindings(); 
         statement.bindLong(1, 0); 
         statement.bindString(2, "Site"); 
         statement.bindString(3, this.SearchLocation); 
         statement.bindString(4, TitleElement); 
         statement.bindString(5, NewURL); 
         statement.bindString(6, ImageHREFElement); 
         statement.bindString(7, PriceElement); 
         statement.bindString(8, "WebSIteDescription"); //Description 
         statement.bindString(9, LocationElement); 
         statement.bindString(10, TrueDateTime); 
         statement.bindString(11, TrueDateTime); 
         Log.d("Line", "4"); 

         long result = statement.executeInsert(); 
         Log.d("Results", "SQL Result" + result); 
      SQL_DATABASE_GLOBALS.SQL_DATABASE.setTransactionSuccessful(); 
       SQL_DATABASE_GLOBALS.SQL_DATABASE.endTransaction(); 

現在刀片本身做一個插入到數據庫中的作品的作品,但這個問題我'm have是數據庫中的第一個項目實際上是一個獨特的自動增量列。所以我得到的錯誤...

「主鍵必須是唯一的」

我將如何處理這是否正常?我是否真的必須坐下來完全創建實際的插入語句,而不是僅僅使用我所做的方法?

不,我不想使用構造值,我想要堅持這種類型的插入。

+0

順便說一句,你應該做你幫個忙,解決列明確,不隱。意思是:INSERT INTO Foo(a,b)VALUES(?,?)。否則,遲早你會遇到麻煩...當你的應用程序生活並獲得第一次修改。 – gorefest 2014-12-11 08:23:02

回答

1

您將值0綁定到唯一列。爲了使自動增量機制起作用,在那裏綁定null。

變化

statement.bindLong(1, 0); 

statement.bindNull(1);