sqlite

作者: 小董666 | 来源:发表于2016-07-26 16:12 被阅读0次

    支持数据类型:

    • NULL,INTEGER,REAL,TEXT,BLOB
    • 空值,整形值,浮点值,字符串,二进制对象。
    动态数据类型(弱引用):
    • 当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite会尝试将该值转化成该列的类型,如果不能转换,则该值将作为本身的类型。主键是integer时不能转。
    Paste_Image.png

    sql语句:

    • 查询语句: select * from 表名 where 条件子句 group by 分组字句 having ... order by 排序子句
    • 如: select * from person
      select * from person order by id desc
      select name from person group by name having count(*)>1
      分页SQL与mysql类似,下面SQL语句获取5条记录,跳过前面3条记录
      select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
    • 插入语句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(‘传智’,3)
    • 更新语句:update 表名 set 字段名=值 where 条件子句。如:update person set name=‘传智‘ where id=10
    • 删除语句:delete from 表名 where 条件子句。如:delete from person where id=10

    占位?

    sql中使用的单引号,如下:
    db.execSQL("insert into person(name, age) values('林计钦', 24)");
    为了解决转意的麻烦,推荐使用?占位
    SQLiteDatabase类提供了一个重载后的execSQL(String sql, Object[] bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)如:
    db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"张三", 4});
    execSQL(String sql, Object[] bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。

    • 完整实例:
      SQLiteDatabase db = ....;
      db.beginTransaction();//开始事务
      try {
      db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"李四", 20});
      db.execSQL("update person set name=? where personid=?", new Object[]{"asd", 1});
      db.setTransactionSuccessful();//调用此方法会在执行到endTransaction() 时提交当前事务,
      如果不调用此方法会回滚事务
      } finally {
      db.endTransaction();//由事务的标志决定是提交事务,还是回滚事务
      }
      db.close();

    • 默认的一条sql语句就是一个事物,但是不如一次插入20条数据,用上面的这种方式就会提高性能。

    • GreenDao 升级
      http://blog.csdn.net/growth58/article/details/50453038

    相关文章

      网友评论

          本文标题:sqlite

          本文链接:https://www.haomeiwen.com/subject/adpgjttx.html