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

[经验分享] ANDROID+SQLITE详解

[复制链接]

尚未签到

发表于 2016-11-29 06:45:31 | 显示全部楼层 |阅读模式
  之前讲过在ANDROID应用开发中我们使用SHAREDPREFERENCE与文件操作数据持久访问的问题,今天我就把SQLITE在ANDROID中应用的详细操作也介绍下吧:
  在ANDROID应用开发中,我们可能最好奇的就是对数据持久保持的操作是怎么实现的了,GOOGLE采用了最轻便与最灵活的数据访问方式,也就是SQLITE这么一个轻量级的数据持久访问方式,之前的SHAREDPREFERENCES只是对小数据与其参数配置方面所做的要求,以及在本地文件进行存储的方式来访问,但是我们需要像在PC终端使用MYSQL,或者ORACLE之类的来对数据进行管理操作,使用SQLITE是同样可以实现的,如果你之前是做J2EE开发的,你可能对MYSQL,ORACLE之类的数据库操作已经很熟悉了,如果是那样的话,你再来操作SQLITE也就问文生意了,他们的最大不同点就是一个小得可以直接放进浏览器里进行操作,一个了需要在本地非常复杂的安装与配置然后以服务器的方式进行管理来操作,从这里就可以知道我们在做手机开发时为什么要使用SQLITE数据库了,下面就具体介绍下其操作步骤与可能会遇到的问题:
  在我们对其SQLITE数据库初次操作时,我们会调用两个方法,分别是:getReadableDatabase(),getWritableDatabase(),当然在你第一次操作时首先你创建的操作类肯定要先继承SQLiteOpenHelper这个内,它要求你去实现两个方法,分别是:onCreate(SQLiteDatabase db);onUpgrade(SQLiteDatabae db,int oledVersion,int newVersion),还有就是你必须要实现一个构造器,即你创建的类为OpenSQLiteDemo类,其构造器为:public OpenSQLiteDemo(Context context,String name,Cursor cursorFactory,int version){super(context,name,cursorFactory,version);},这样可以构造出一个上下文对象出来,在你操作方法时,可以使用上下文对象来操作,为此我在调用这个构造器会传送一个版本号,通过这个版本号可以去判断,我们到底是调用是否需要去调用onUpgrade()方法来更新数据表的结构,我们想来看一下源码对其判断的操作吧:当我们调用SQLiteOpenHelper类中的getWritableDatabase方法时,首先会有一个用来保存数据库对象的上下文来进行判断,即mDatabase!=null与mDatabase.isOpen()与mDatabae.isReadOnly()后,如果数据库已经创建就跳过,否则就直接返回已经创建的mDatabae,当第一次执行是肯定会跳过去创建新库,注意在此期间还有一个步骤就是,它判断在安装初始化为FLASE时抛出非状态异常,可以从源码这句来说明:if(mIsInitializing is false){throw new IllgealStateException("getWritableDtabase called recurisively");},然后我们通过版本号,来判断,版本号时时候等于0,初始默认为0,此时就会调用onCreadte(db)来进行新创建库,这可以根据构造器你的名称来设置库名,如果我已经创建人这个数据库,然而我想对其数据库表结构进行更改时,或者是版本进行更新时,我们可以设置它的版本号于不同之前的版本号即可,一般为数字上浮来设置,这样,我们就可以在onUpgrade()方法里对数据表进行操作,可以对其执行execSQL(sql)方法来执行如对其表增加一列,和删除某列都行,这时,我们在调用SQLiteOpenHelper类的getWritableDatabase方法时就会判断其版本号是否与之前相同,如果不同,就会调用onUpgrade(db,version,mNewVersion)方法来进行更新,OK,这是讲我们创建数据库时的操作,不要忘了,第一次操作,会判断一个方法:openOrCreateDatabase()方法对其数据库创建与否的操作,下面我们就来介绍通过SQLITE来对数据进行CURD的操作,在SQLITE中也有CURD四个操作的方法,只是我们更习惯去使用SQLITE提供的execSQL(代表增加,更新,删除的操作),rawQuery(代表查询)的操作,因为只有两个方法,使用起来方便灵活,只是在这里,我们可以注意一下,我们在进行相应操作的时候,最好找当前类中对上下文进行构造,然后通过上下文来获取去类下的信息,如果在你想对另外一个类进行操作时,如果你直接在没有把上下文构造出来就进行使用上下文来构造的话,就会抛空指针异常,这里请特别注意,在我的资源你有源码提供下载与其详细参考,其CURD的操作找这里我也就不在详细熬术,与在J2EE中操作ORACLE数据库一样,很简单,所以,有疑问的就去把我的源码下载下来吧:http://jiangshide.download.csdn.net/

运维网声明 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-306805-1-1.html 上篇帖子: Android SQLite简介 下篇帖子: android SQLite操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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