对比下列两端代码, 看name的区别, 由于无法写, 对比看下就可以解决
报错的写法
// 6. 删除数据
func deleteOneData(name:String) {
dbQueue?.inDatabase({ (db) in
if db.open(){
let reslutSet = "DELETE FROM User where name = '\(name)'"
if db.executeUpdate(reslutSet, withArgumentsIn: []){
print("删除成功")
}else{
print("删除失败")
}
}
})
dbQueue?.close()
}
正确解决写法
// 6. 删除数据
func deleteOneData(name:String) {
dbQueue?.inDatabase({ (db) in
if db.open(){
let reslutSet = "DELETE FROM User where name = \"\(name)\""
if db.executeUpdate(reslutSet, withArgumentsIn: []){
print("删除成功")
}else{
print("删除失败")
}
}
})
dbQueue?.close()
}
原因: 在第一种错误写法中, 如果name中带 ' 符号的话(比如 I'm ),在删除校验时是只会截取 I' 这个字段, 所有无法找到对应的字段进行删除
网友评论