如果提供的值在该表中不存在,我只想将值插入表中,我的意思是我提供了一个列为UNIQUE,因此当尝试输入两次该值时,sqlite3 UNIQUE约束将被破坏,想要一个sqlite3插入语句,这有助于我的代码是这样做的。我读到INSERT IGNORE用于此目的。有人可以为我提供正确的语法吗? 我的代码如下。
String insertQuery1 = "INSERT INTO Bookdetails bookpath,lastchapter VALUES(?,?)";
db.execSQL(Query1, new String[] { filepath, none });
此查询的正确语法是什么? filepath和none是分配了值的字符串 此表Bookdetails也有一个主键字段' id'这是自动增量?以这种方式插入数据会产生任何问题吗?
答案 0 :(得分:2)
更改
INSERT INTO Bookdetails bookpath,lastchapter VALUES(?,?)
到
INSERT OR IGNORE INTO Bookdetails (bookpath,lastchapter) VALUES(?,?)
OR IGNORE
会导致违反UNIQUE
等约束时,插件不会发生,并且不会出错。
要插入的列名称必须位于()
个parens。
此外,您还将其他一些查询传递给execSQL()
,而不是此处的insertQuery1
。
此表Bookdetails还有一个主键字段' id'这是自动增量?以这种方式插入数据会产生任何问题吗?
不,因为没有插入。
如果你有INSERT OR REPLACE
而不是忽略,那么它会转换为DELETE
后跟INSERT
,如果插件本身未指定id,则会生成新的行ID
答案 1 :(得分:2)
String insertQuery1 =“INSERT INTO Bookdetails(bookpath,lastchapter)VALUES(?,?)”; db.execSQL(Query1,new String [] {filepath,none});
答案 2 :(得分:1)
查询错误:
INSERT INTO Bookdetails bookpath,lastchapter VALUES(?,?)
应该是:
INSERT INTO Bookdetails (bookpath, lastchapter) VALUES (?, ?)
注意字段列表周围的括号!