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

[经验分享] ANDROID+SQLITE详解2

[复制链接]

尚未签到

发表于 2016-11-29 11:45:17 | 显示全部楼层 |阅读模式
  之前讲解过在ANDROID中在使用SQLITE中的EXECSQL()与RAWQUERY()方法来实现CURD的操作,但是那些都是在针对我们都非常熟练使用SQLITE的情况下来操作的,只是有时候不能避免我们每个人的操作习惯不同与可能在操作过程中为一些初级者提供更方便的操作过程,所以ANDROID相对来说还是做得很人性话的,如它为一些初级使用在对SQL进行包装,初级使用在只需要对其简单的参数设置与实现就可以完成一般的SQL的CURD操作了,如ANDROID提供了四个方法onInsert(),onUpdate(),onQuery(),onDelete(),下面我们就来对其几个方法进行详细讲解
  首先是insert()方法:SQLiteDatabase db = new DBOpenHelper().getWritableDatabae();db.insert(String table,String nullColumnHack,ContentValues values);在这个方法中第一个参数为:所需填入的表名,第二个参数就是空列时的处理方式,第三个参数为用来存放各个字段的值,类似与Map用来存放名值对一样:其详细操作可以如下:当我们有一个可传实体参数名为Contact,其Contact的字段名有:id为主键,name,phone,首先打开数据库,SQLiteDatabase db = new DBOpenHelper().getWritableDatabase(),ContentValues values = new ContentValues();values.put("name",Contact.getName),values.put("phone",Contact.getPhone);db.insert("Contact",null,values);这样就可以完全实现使用基本的插入方法对数据来进行插入操作
  其次就是update()方法的使用:同样SQLiteDatabase db = new DBOpenHelper().getWritableDatabase()来打开数据库,然后使用ContentValues values = new ContentValues();values.put("name",contact.getName());values.put("phone",contact.getPhone());db.update(String table,ContentValues values,String whereClause,String[] whereArgs);即第一个参数为表名,第二个参数为所更新的字段名,第三课参数为,对其操作的条件,第四个参数为在第三个参数的基础上所需的条件值,具体操作如下:SQLiteDatabase db = new DBOpenHelper().getWritableDatabasae();ContentValues values = new ContentValues();values.put("name",contact.getName());values.put("phone",contact.getPhone());db.update("contact",values,"id=?",new String[]{String.valueOf(contact.getId())});
  再次就是query()的操作:在查询的操作中我们需要对其游标进行操作,所以希望有对数据库SQL的游标不是怎么熟悉的,自己去网上再查看一下,下面我就不多做介绍了:db.query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy);同样第一个参数为表名,第二个参数为列名,即字段,第三个参数为条件,第四个参数为条件值,第五个参数为分组操作,第六个参数为过滤操作,第七个参数为排序操作,EG:SQLiteDatabase db = DBOpenHelper.getReadableDatabase();Cursor cursor = db.query("contact",null,"id=?,new String[]{id.toString()}",null,null,"id asc");if(cursor.moveToFirst()){int id = cursor.getInt(cursor.getColumnIndex("id"));String name = cursor.getString(cursor.getColumnI,ndex("name"));String phone = cursor.getString(cursor.getColumnIndex("phone"));return new Contact(id,name,phone);}, 在这里查询语句也就完毕了,是不是很简单.
  最后就是delete()方法的操作了:它更简单:SQLiteDatabase db = new DBOpenHelper().getWritableDatabase();db.delete(String table,String whereClause,String[] selectionArgs):SQLiteDatabase db = new DBOpenHelper().getWritable();db.delete("contact","id=?",new String[]{id.toString()});
  好了以上就是在ANDROID里为初学者提供的简单的对SQL的CURD操作,希望有不明白的可以多在网上查些资料来解决,当然它不仅仅只提供了这几个方法,比如还有replace()等,只是在这里我需要说明的是,能不使用这基本的操作尽量不要使用,因为它是对SQL封装后的一种操作,虽然免去了我们写SQL语句的一些细节,但是对执行一个完整SQL语句还是很有影响的,一般来说封装的直接后果会带来不必要的功能添加与数据执行执行周期,这最终会影响数据执行的性能,所以个人还是介意使用execSQL()与rawQuery()来直接代替操作,因为在源码中我们可以看到这么一段:StringBuilder sb = new StringBuilder(521);sb.append("INSERT");if(algorithm!=null){sql.append(" OR ");sql.append(algorithm.value());sql.append("INTO ");sql.append(table);},如我们在使用insert()方法时,其values有没有值,nullColumnHack项都会为我们添加进一条参数,所以当第三个参数为空时,或者集合你没有元素,系统默认为了构造完整的SQL语句就会使用到第二个参数,如果第二个参数也为空的话,这样的语法按理那说还是有问题的,还有就是把第二个参数设置为主键也是不行的,因为其默认为空,然而主键是不能为空的,只是SQLITE认为是可以的,因为当你对其设置为主键后,它的默认空值就不会起作用,它还会自动增长起作用,其名称是可以随意取的,OK在这里对SQLITE的基本查询方式的操作也就讲完了,可能在讲解这些操作中我不是太有顺序的讲解,因为这些都是很久的以前的简单总结,所以就在这里觉得有时间的时候就贴上来,给那些热爱编程的朋友可以做些相关参考......如有什么疑问请可随时留言

运维网声明 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-307226-1-1.html 上篇帖子: (sqlite)database table is locked 下篇帖子: Sqlite插入或更新
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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