SQLite绑定插入语句抛出错误与唯一键

时间:2014-12-10 22:45:35

标签: android sqlite

我使用以下代码使用Android 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();

现在插入本身有效,但我遇到的问题是数据库中的第一项实际上是一个唯一的自动增量列。所以我得到错误......

"主键必须是唯一的"

我将如何正常处理?我真的必须坐下来完全创建实际的插入语句而不是仅使用我所使用的方法吗?

不,我也不想使用构造值,我想坚持使用这种类型的插入。

1 个答案:

答案 0 :(得分:1)

您将值0绑定到唯一列。要启动自动增量机制,请在那里绑定null。

更改

statement.bindLong(1, 0);

statement.bindNull(1);