首页 > 代码库 > 数据库常见问题总结

数据库常见问题总结

在我之前的项目中,存取数据使用的都是NSCoding方式,这样做避免了复杂的数据库操作,也造成了我数据库使用的困难。

最近做的一个项目中,大量的使用到数据库操作,涨姿势了,记录一下。

 

一、使用惯例:

(1)使用FMDB第三方库管理数据库

(2)不需要事务时,使用inDatabase

(3)需要使用事务时,使用inTransaction

(4)inTransaction也可以替换为beginTransaction和commit的配对使用

(5)事务不可以嵌套

(6)sql语句使用?为占位符,以防sql注入问题

 

二、常见使用错误:

大部分的错误根据FMDataBase输出的错误提示,都可轻松解决。但有些错误的提示较为模糊,解决可能有一定困难,以下为我遇到的一部分:

1、there is at least one open result

原因:ResultSet需要手动关闭。

大部分情况下,通过[resultSet next]方法遍历了resultset的所有结果,是不需要关闭的。

但如果没有遍历所有的结果,并且没有手动关闭的话,就会报这个警告。一般是因为使用了if([resultSet next])

 

2、sql语句中的in语法不能使用

只能通过循环自己实现in语法了

 

3、误用executeQuery、executeUpdate

这个问题很容易理解,但也很容易忘记

 

 

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #31595d } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #31595d } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #31595d } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 } span.s1 { }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #31595d } span.s1 { }</style>

数据库常见问题总结