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();

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

"主键必须是唯一的"

我通常如何处理这个问题? 我真的必须坐下来完全创建实际的 insert 语句本身,而不仅仅是使用我所做的方法吗?

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

将值 0 绑定到唯一列。要使自动增量机制启动,请在此处绑定一个 null。

改变

statement.bindLong(1, 0);

statement.bindNull(1);

最新更新