7007 发表于 2016-11-30 09:30:04

Android 数据存储与读取:SQLite

在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。
下面介绍的基本使用:
是一个抽象类不能直接实例化,所以新建一个类DBOpenHelper继承自SQLiteOpenHelper :

viewplaincopyprint?



[*]publicclassDBOpenHelperextendsSQLiteOpenHelper{
[*]publicDBOpenHelper(Contextcontext){
[*]super(context,"yhn.db",null,1);
[*]}
[*]
[*]//数据库第一次创建时候调用,
[*]publicvoidonCreate(SQLiteDatabasedb){
[*]db.execSQL("createtableuser(uidintegerprimarykeyautoincrement,unamevarchar(20),uaddressvarchar(20))");
[*]}
[*]
[*]//数据库文件版本号发生变化时调用
[*]publicvoidonUpgrade(SQLiteDatabasearg0,intarg1,intarg2){
[*]
[*]}


如果执行上边的代码,则会创建一个数据库文件xx.db



数据库操作类:
viewplaincopyprint?



[*]publicclassDBDao{
[*]DBOpenHelperdbOpenHelper;
[*]
[*]publicDBDao(Contextcontext){
[*]this.dbOpenHelper=newDBOpenHelper(context);
[*]}
[*]/**
[*]*添加一条数据
[*]*@paramuser
[*]*/
[*]publicvoidsave(Useruser){
[*]SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
[*]db.execSQL("insertintouser(uname,uaddress)values(?,?)",newObject[]{user.getUname(),user.getUaddress()});
[*]db.close();
[*]}
[*]/**
[*]*删除一条数据
[*]*@paramuid
[*]*/
[*]publicvoiddelete(Integeruid){
[*]SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
[*]db.execSQL("deletefromuserwhereuid=?",newObject[]{uid});
[*]db.close();
[*]}
[*]/**
[*]*更新一条数据
[*]*@paramuser
[*]*/
[*]publicvoidupdate(Useruser){
[*]SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
[*]db.execSQL("updateusersetuname=?,uaddress=?whereuid=?",newObject[]{user.getUname(),user.getUaddress(),user.getUid()});
[*]db.close();
[*]}
[*]/**
[*]*查找一条数据
[*]*@paramuid
[*]*/
[*]publicUserfind(Integeruid){
[*]SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
[*]Cursorcursor=db.rawQuery("select*fromuserwhereuid=?",newString[]{uid.toString()});
[*]if(cursor.moveToFirst()){
[*]intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
[*]Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
[*]Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
[*]Useruser=newUser();
[*]user.setUid(uid2);
[*]user.setUname(uname);
[*]user.setUaddress(uaddress);
[*]returnuser;
[*]}
[*]cursor.close();
[*]returnnull;
[*]}
[*]/**
[*]*分页查找数据
[*]*@paramoffset跳过多少条数据
[*]*@parammaxResult每页多少条数据
[*]*@return
[*]*/
[*]publicList<User>getScrollData(intoffset,intmaxResult){
[*]List<User>users=newArrayList<User>();
[*]SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
[*]Cursorcursor=db.rawQuery("select*fromuserorderbyuidasclimit?,?",newString[]{String.valueOf(offset),String.valueOf(maxResult)});
[*]while(cursor.moveToNext()){
[*]intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
[*]Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
[*]Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
[*]Useruser=newUser();
[*]user.setUid(uid2);
[*]user.setUname(uname);
[*]user.setUaddress(uaddress);
[*]users.add(user);
[*]}
[*]returnusers;
[*]}
[*]/**
[*]*获取数据总数
[*]*@return
[*]*/
[*]publiclonggetCount(){
[*]SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
[*]Cursorcursor=db.rawQuery("selectcount(*)fromuser",null);
[*]cursor.moveToFirst();
[*]longreslut=cursor.getLong(0);
[*]returnreslut;
[*]}
[*]}


示例:向数据库中添加一条数据

viewplaincopyprint?



[*]DBDaodbDao=newDBDao(this);
[*]Useruser=newUser();
[*]user.setUname("qixiaohu");
[*]user.setUaddress("chengdu");
[*]dbDao.save(user);



PC上管理SQLite数据库的方法:


上边添加数据后可以看到数据添加成功:
页: [1]
查看完整版本: Android 数据存储与读取:SQLite