sqlite笔记

1.除非SQLite运行在“auto_vacuum=FULL”模式,否则当从数据库文件中删除大量数据之后,就会留下很多空白空间,或者“空闲”的数据库页。这意味着数据库文件的大小会比(它所存储的数据)实际需要的(空间)更大。运行VACUUM命令将会重新构建数据库文件,回收空白空间,减小数据库文件的大小

myDatabase.execSQL("VACUUM");


2.

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

使用例子如下:

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

3.使用SQLiteStatement 提升查询效率
  1. database.execSQL("create table if not exists emperors("
  2. + " id integer primary key autoincrement," + " name text,"
  3. + "dynasty text," + "start_year text" + ");");

  4. SQLiteStatement statement = database
  5. .compileStatement("insert into emperors(name,dynasty,start_year) values(?,?,?)");
  6. int index = 1;
  7. statement.bindString(index++, "朱元璋");
  8. statement.bindString(index++, "明");
  9. statement.bindString(index++, "1398");
  10. statement.execute();

  11. index = 1;
  12. statement.bindString(index++, "玄烨");
  13. statement.bindString(index++, "清");
  14. statement.bindString(index++, "1722");
  15. statement.execute();

  16. statement.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值