欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 运维知识 > android >内容正文

android

android——sqlite实现面向对象crud -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 android 22 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 android——sqlite实现面向对象crud 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

       android中sqlite的使用,事实上倒也不难。可是与jdbc操作数据库相比,这个还是有点不顺手,并且我好久没写底层的封装了,使用ssm框架这些都不须要考虑......好了,废话不多说。以下直接建立一个測试project来试试sqlite在android中的应用吧。


1、新建一个project




2、配置junit測试环境

打开androidmanifest.xml文件,进行junit相关配置,详细例如以下图:



3、源代码

        关于在android中怎样使用sqlite的文章非常多,我也是參考那些文章进行学习的。

作为一个j2ee方向的开发人员,我习惯于面向对象进行编程,而老罗的视频以及一些其它的教程关于crud操作使用的都是字符串,这我有点不适应,全部我在学习的过程中就改成了面向对象的crud操作。这样用着也方便点。原理、api什么的我就不说了。百度一下嗖嗖的都出来了,以下直接贴代码(完整project下载。点这里):

      这样一个继承sqliteopenhelper的类主要就这么几个功能:

           a.创建数据库和表

           b.假设数据库有不同版本号那么就会更新数据库

           c.调用的这个类的对象来取得数据库的读写权限


package com.example.db;import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper;public class dbhelper extends sqliteopenhelper {private static final string database_name = "test.db";private static final int database_version = 1;public dbhelper(context context) {// cursorfactory设置为null,使用默认值super(context, database_name, null, database_version);}// 数据库第一次被创建时oncreate会被调用@overridepublic void oncreate(sqlitedatabase db) {string sql = "create table if not exists person " "(id integer primary key autoincrement,name varchar(32),sex varchar(8))";db.execsql(sql);}// 假设database_version值被改为2,系统发现现有数据库版本号不同,即会调用onupgrade@overridepublic void onupgrade(sqlitedatabase db, int oldversion, int newversion) {db.execsql("alter table base_info add column other string");} }
能够看到上面创建了一个叫test.db的数据库。当中有一个表person,表中有三个字段:主键-id。姓名-name,性别-sex。


以下生成这个表相应的实体类:

package com.example.pojo;public class person {private int id;private string name;private string sex;public int getid() {return id;}public void setid(int id) {this.id = id;}public string getname() {return name;}public void setname(string name) {this.name = name;}public string getsex() {return sex;}public void setsex(string sex) {this.sex = sex;}@overridepublic string tostring() {return "person [id=" id ", name=" name ", sex=" sex "]";}}

我们要实现crud操作,那么建一个接口定义crud方法:

package com.example.dao;import com.example.pojo.person;public interface ipersondao {public boolean insert(person person);public boolean delete(int id);public boolean update(person person);public person select(int id); }

以下要实现ipersondao接口。定义详细的业务方法:

package com.example.dao.impl;import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase;import com.example.dao.ipersondao; import com.example.db.dbhelper; import com.example.pojo.person;public class persondaoimpl implements ipersondao {dbhelper helper = null;public persondaoimpl(context context){helper = new dbhelper(context);}@overridepublic boolean insert(person person) {boolean flag = false;sqlitedatabase database = null;try {string sql = "insert into person(name,sex) values (?,?)";database = helper.getwritabledatabase();database.execsql(sql, new object[]{person.getname(),person.getsex()});flag = true;} catch (exception e) {e.printstacktrace();}finally{if(database!=null){database.close();}}return flag;}@overridepublic boolean delete(int id) {boolean flag = false;sqlitedatabase database = null;try {string sql = "delete from person where id=?";database = helper.getwritabledatabase();database.execsql(sql, new object[]{integer.tostring(id)});flag = true;} catch (exception e) {e.printstacktrace();}finally{if(database!=null){database.close();}}return flag;}@overridepublic boolean update(person person) {boolean flag = false;sqlitedatabase database = null;try {string sql = "update person set name=? , sex=? where id=?";database = helper.getwritabledatabase();database.execsql(sql, new object[]{person.getname(),person.getsex(),person.getid()});flag = true;} catch (exception e) {e.printstacktrace();}finally{if(database!=null){database.close();}}return flag;}@overridepublic person select(int id) {person person = new person();sqlitedatabase database = null;try {string sql = "select * from person where id=?";database = helper.getreadabledatabase(); cursor cursor = database.rawquery(sql, new string[]{integer.tostring(id)});while(cursor.movetonext()){int _id = cursor.getint(cursor.getcolumnindex("id"));string _name = cursor.getstring(cursor.getcolumnindex("name"));string _sex = cursor.getstring(cursor.getcolumnindex("sex"));person.setid(_id);person.setname(_name);person.setsex(_sex);}} catch (exception e) {e.printstacktrace();}finally{if(database!=null){database.close();}}return person;}}
以上完毕之后就能够開始单元測试了。绿色......

package com.example.test;import com.example.dao.ipersondao; import com.example.dao.impl.persondaoimpl; import com.example.pojo.person;import android.test.androidtestcase; import android.util.log;public class test extends androidtestcase {public void insertdb(){ipersondao persondao = new persondaoimpl(getcontext());person person = new person();person.setname("李四");person.setsex("男");persondao.insert(person);}public void selectdb(){ipersondao persondao = new persondaoimpl(getcontext());person person = persondao.select(1);log.i("info", person.tostring());}public void updatedb(){ipersondao persondao = new persondaoimpl(getcontext());person person = persondao.select(1);person.setname("改名字啦");person.setsex("不详");persondao.update(person);}public void deletedb(){ipersondao persondao = new persondaoimpl(getcontext());persondao.delete(2);}}


导出test.db文件。在sqlite expert中打开:



这是insert測试成功的样例。其它就不放图了,这个软件百度就能够下载了。



(转载注明出处:http://blog.csdn.net/zhshulin)

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的android——sqlite实现面向对象crud的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

网站地图