设为首页 收藏本站
查看: 1450|回复: 0

[经验分享] sqlite笔记

[复制链接]

尚未签到

发表于 2016-11-28 11:12:20 | 显示全部楼层 |阅读模式
  1.除非SQLite运行在“auto_vacuum=FULL”模式,否则当从数据库文件中删除大量数据之后,就会留下很多空白空间,或者“空闲”的数据库页。这意味着数据库文件的大小会比(它所存储的数据)实际需要的(空间)更大。运行VACUUM命令将会重新构建数据库文件,回收空白空间,减小数据库文件的大小
  myDatabase.execSQL("VACUUM");

  

  2.
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果为成功则提交事务,否则回滚事务。当应用需要提交事务,必须在程序执行到endTransaction()方法之前使用setTransactionSuccessful()方法设置事务的标志为成功,如果不调用setTransactionSuccessful() 方法,默认会回滚事务。

使用例子如下:

1SQLiteDatabasedb= DSC0000.gif .;
2db.beginTransaction();//开始事务
3try{
4db.execSQL("insertintoperson(name,age)values(?,?)",newObject[]{"gaolei",22});
5db.execSQL("updatepersonsetname=?wherepersonid=?",newObject[]{"zhangsan",1});
6db.setTransactionSuccessful();//调用此方法会在执行到endTransaction()时提交当前事务,如果不调用此方法会回滚事务
7}finally{
8db.endTransaction();//由事务的标志决定是提交事务,还是回滚事务
9}
10db.close();


上面两条SQL语句在同一个事务中执行。


3.使用SQLiteStatement提升查询效率

  • database.execSQL("create table if not exists emperors("

  •       + " id integer primary key autoincrement," + " name text,"

  •       + "dynasty text," + "start_year text" + ");");



  •   SQLiteStatement statement = database

  •       .compileStatement("insert into emperors(name,dynasty,start_year) values(?,?,?)");

  •   int index = 1;

  •   statement.bindString(index++, "朱元璋");

  •   statement.bindString(index++, "明");

  •   statement.bindString(index++, "1398");

  •   statement.execute();



  •   index = 1;

  •   statement.bindString(index++, "玄烨");

  •   statement.bindString(index++, "清");

  •   statement.bindString(index++, "1722");

  •   statement.execute();



  •   statement.close();

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306656-1-1.html 上篇帖子: SQLite --函数 下篇帖子: sqlite实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表