菜鸟之路-android下sqlite使用的一些总结

增加
public void add(String phone, int mode) {

db.insert(BlackTable.BLACKTABLE, null, values);


ContentValues values = new ContentValues();
values.put(BlackTable.PHONE, phone);
values.put(BlackTable.MODE, mode);
        
        
总结 增加
1.你要往哪个表添加数据     LockedTable.TABLENAME 注:这里我做了常量
2.通常为null              如果第三个参数values 不为Null并且元素的个数大于0 ,可以把第二个参数设置为null。
3.需要添加的值            values  ContentValues对象,类似一个map通过键值对的形式存储值。

    
增加的方法 第二个参数解释
不管第三个参数是否包含数据,执行Insert()方法必然会添加一条记录,如果第三个参数为空,会添加一条除主键之外其他字段值为Null的记录。Insert()方法内部实际上通过构造insert SQL语句完成数据的添加,Insert()方法的第二个参数用于指定空值字段的名称,相信大家对该参数会感到疑惑,该参数的作用是什么?是这样的:如果第三个参数values 为Null或者元素个数为0, 由于Insert()方法要求必须添加一条除了主键之外其它字段为Null值的记录,为了满足SQL语法的需要, insert语句必须给定一个字段名,如:insert into person(name) values(NULL),倘若不给定字段名 , insert语句就成了这样: insert into person() values(),显然这不满足标准SQL的语法。对于字段名,建议使用主键之外的字段,如果使用了INTEGER类型的主键字段,执行类似insert into person(personid) values(NULL)的insert语句后,该主键字段值也不会为NULL。如果第三个参数values 不为Null并且元素的个数大于0 ,可以把第二个参数设置为null。




            


删除
public void remove(String packName) {

database.delete(LockedTable.TABLENAME, LockedTable.PACKNAME + "=?",new String[] { packName });
总结 删除                
1.你要删除哪个表的数据 LockedTable.TABLENAME
2.你要根据哪一列来删除数据 LockedTable.PACKNAME + "=?"
3.列名是什么 new String[] { packName }








查询

第一种 写法 select 1 from 这个1通常用来查询是否有这个记录,就是不指定返回哪一列的值,只要有一个值就返回一列,两个就两列
public boolean isLocked(String packName) {

Cursor cursor = database.rawQuery("select 1 from "+ LockedTable.TABLENAME + " where " + LockedTable.PACKNAME+ "=?", new String[] { packName });




第二种写法 从BlackTable.BLACKTABLE表中返回所有数据这里是 BlackTable.PHONE和BlackTable.MODE                
public List<BlackBean> getAllDatas() {    
            
Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + ","+ BlackTable.MODE + " from " + BlackTable.BLACKTABLE, null);




第三种写法  根据name从BlackTable.BLACKTABLE表中查询BlackTable.PHONE
public String isLocked(String name) {

Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + " from " + BlackTable.BLACKTABLE+" where "+ BlackTable.NAME+ "=?", new String[]{ name });



第四种写法  分批加载数据  用limit限制从第几条开始的多少条数据  意思:从BlackTable.BLACKTABLE表中查询第startIndex条开始往后的datasNumber条数据,返回这些数据的BlackTable.PHONE 和 BlackTable.MODE   order by _id desc根据_id倒叙排列,意思就是最新的数据放在上面

public List<BlackBean> getMoreDatas(int datasNumber, int startIndex) {
Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + ","+ BlackTable.MODE + " from " + BlackTable.BLACKTABLE+ " order by _id desc limit ?,? ", new String[] {startIndex + "", datasNumber + "" });


SQL之limit用法
mysql支持limit
select * from tablename limit 0,1
即取出第一条记录。

select * from tablename limit 1,1
第二条记录

select * from tablename limit 10,20
从第11条到31条(共计20条)




总结 查询

1.写sql语句  
2.占位符 为null就是返回所有的数据





    android rawquery和query的比较

    Cursor cursor = db.rawQuery("select name from *** where id=?", new String[]{"1"});
    Cursor cursor = db.query("***", new String[]{"name"}, "id=?", new String[]{"1"}, null, null, null);

    上面是两个分别是query和rawQuery的查询语句,主要区别是rawQuery是直接使用SQL语句进行查询的,也就是第一个参数字符串,在字符串内的“?”会被后面的String[]数组逐一对换掉;而query函数是Android自己封装的查询API






android sqlite中查询数据rawQuery方法中String[] selectionArgs的详解,谢谢!!!

SQLite查询数据库时用方法rawQuery(String sql,String[] selectionArgs);
String[] selectionArgs具体什么意思呢,查了一下资料说是占位符,具体有什么用呢;
最好能够举一个例说明,真心求教! 谢谢!!!

既然你选择了有条件的sql语句,假如你有一个data表有下面这样的数据
id          name             number
1           lisi              5554
2           wangwu            5556

rawQuery的sql语句select * from data where name=?,后面selectionArgs是?条件值,如果?这个占位符为null的话就表示把所有的name查出来(lisi,wangwu都会返回到Cursor结果集里),如果这个?占位符有值为wangwu,就表示只把wangwu这条数据查出来,所以?就是selectionArgs占位符,而selectionArgs就是具体条件,为null就表示全部都要,如果指定的要选wangwu就要new String[] {"wangwu"}这个占位符?的值给出来。




修改
public void update(String phone, int mode) {

ContentValues values = new ContentValues();// 修改新的属性值
        
values.put(BlackTable.MODE, mode);
根据号码 修改这个表中mode的值
db.update(BlackTable.BLACKTABLE, values, BlackTable.PHONE + "=?",new String[] { phone });

修改总结

1.你要修改哪个表的数据 LockedTable.TABLENAME
2.你要修改那一列的数据
3.你要根据哪一列来修改数据 LockedTable.PACKNAME + "=?"
4.列名是什么 new String[] { packName }





增删改查总结
总结 增加
1.你要往哪个表添加数据     LockedTable.TABLENAME 注:这里我做了常量
2.通常为null              如果第三个参数values 不为Null并且元素的个数大于0 ,可以把第二个参数设置为null。
3.需要添加的值            values  ContentValues对象,类似一个map通过键值对的形式存储值。

总结 删除                
1.你要删除哪个表的数据 LockedTable.TABLENAME
2.你要根据哪一列来删除数据 LockedTable.PACKNAME + "=?"
3.列名是什么 new String[] { packName }

修改总结
1.你要修改哪个表的数据 LockedTable.TABLENAME
2.你要修改那一列的数据
3.你要根据哪一列来修改数据 LockedTable.PACKNAME + "=?"
4.列名是什么 new String[] { packName }

总结 查询
1.写sql语句  
2.占位符 为null就是返回所有的数据










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值