Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用多个WHERE子句[SQLITE]删除_Sqlite - Fatal编程技术网

如何使用多个WHERE子句[SQLITE]删除

如何使用多个WHERE子句[SQLITE]删除,sqlite,Sqlite,我想问的第一个问题是,使用多个where子句进行一个delete查询更快,还是一个接一个地进行查询更快? 第二,如果是这样,那么如何使用多个where子句进行delete查询? 提前谢谢 试着用这个也许就是你问题的答案: db.delete(TABLE, KEY1 + "=? AND " + KEY2 + "=? AND " + KEY3 + "=? AND " + KEY4 + "=?", new String[] {param1, param2, param3,

我想问的第一个问题是,使用多个where子句进行一个delete查询更快,还是一个接一个地进行查询更快? 第二,如果是这样,那么如何使用多个where子句进行delete查询?
提前谢谢

试着用这个也许就是你问题的答案:

   db.delete(TABLE,
    KEY1 + "=? AND " + KEY2 + "=? AND " +
    KEY3 + "=? AND " + KEY4 + "=?",
    new String[] {param1, param2, param3, param4});
如果使用普通选择,请使用以下选项:

   db.delete(TABLE,"Column1='value1' and column2 like 'value2'...", null);

不能有多个
WHERE
子句,但可以使条件更复杂

如果您的表有
FirstName
LastName
,并且您希望删除
John Doe
Toby Steed
Linda Powers
,则组合
以及
如下条件:

从MyTable中删除
其中(FirstName='John'和LastName='Doe')
或者(FirstName='Toby'和LastName='Steed')
或者(FirstName='Linda'和LastName='Powers')
现在,如果您是从Java来实现的,就不应该(永远!)使用字符串连接来构建这样的SQL语句。使用
PreparedStatement

String sql=“从MyTable中删除”+
“其中(FirstName=?和LastName=?)”+
“或(FirstName=?和LastName=?)”+
“或(FirstName=?和LastName=?)”;
try(PreparedStatement stmt=conn.prepareStatement(sql)){
stmt.setString(1,“John”);
标准设置字符串(2,“Doe”);
标准设置字符串(3,“托比”);
固定管柱(4,“骏马”);
stmt.setString(5,“Linda”);
stmt.setString(6,“权力”);
stmt.executeUpdate();
}

你的意思是
从学生中删除,其中学生Id=1,学生名为“%An%”
?@user2004685他可能是指使用
而不是
,因为他提出了替代方法来执行多个查询。是的,我想一次删除多行,如Name=John names=Doe和还有,这里name=Dog name=Barf类似的东西好吧,但我使用了经典的方式,比如“从表名中选择*”或“从表名中删除,其中name='John'和姓氏='Doe'。你能告诉我怎么把上面的东西变成这样吗?谢谢!为什么我不应该使用字符串连接来构建SQL语句呢?比如,如果我这样做是不是很糟糕?@J.Arbet,因为值(例如,
John
)可能来自外部不受信任的源,并且可能是恶意的,或者仅仅包含导致SQL问题的字符,例如撇号。因此,除非您确保转义所有特殊字符,否则您很容易受到攻击(允许黑客窃取和/或删除您的数据),否则您的SQL将完全失败,例如,对于
LastName='O'Malley'
。使用
setString()。