当前位置: 移动技术网 > 移动技术>移动开发>Android > Android开发之使用SQLite存储数据的方法分析

Android开发之使用SQLite存储数据的方法分析

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了android开发之使用sqlite存储数据的方法。分享给大家供大家参考,具体如下:

前面已经说到了几种文件的操作如sharedreference,sdcard.实际上android还提供了另外的存储方式那就是sqlite。只要学习过数据库掌握这个也是没问题的。下面就和我一起来弄一下这个吧。

1. 安装一个sqlitedeveloper,这个用来打开android生成的数据库。软件随便搜索就能找到,后面导出数据库只需打开软件点击“数据库“----->"注册数据库"后面的操作最好自己摸索吧

2. 编写一个业务类先生成一个数据库和数据库表,这个类如下所示

package org.lxh.service;
import android.content.context;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqlitedatabase.cursorfactory;
import android.database.sqlite.sqliteopenhelper;
import android.database.sqlite.sqlitequerybuilder;
public class dbservice extends sqliteopenhelper { //使用sqliteopenhelper创建数据库
  public dbservice(context context) {
    super(context, "mldn.db", null, 1);
  }
  public void oncreate(sqlitedatabase db) {
    string sql="create table student(userid integer primary key autoincrement,username varchar(30))";  //生成数据库表的sql
    db.execsql(sql); //生成表
  }
  public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {
  }
}

数据库和表准备好之后就可以做下一步的工作了

3. 编写增删改查的业务类

package org.lxh.service;
import java.util.arraylist;
import java.util.iterator;
import java.util.list;
import org.lxh.vo.student;
import android.content.context;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
public class studentservice {
  private dbservice db;
  public studentservice(context context){ //构造方法实例化dbservice
    db=new dbservice(context);
  }
  public void saveperson(list<student> stu){
    string sql="insert into student(username) values(?)";
    sqlitedatabase database=db.getwritabledatabase(); //使用getwritabledatabase取得sqlitedatabase
    iterator<student> it=stu.iterator();
    while(it.hasnext()){
      student student=it.next();
      database.execsql(sql, new object[]{student.getusername()}); //执行插入
    }
  }
  public void delete(int userid){
    string sql="delete from student where userid=?";
    sqlitedatabase database=db.getwritabledatabase();
    database.execsql(sql, new object[]{string.valueof(userid)});
  }
  public list<student> fiandall(){
    list<student> all=new arraylist<student>();
    string sql="select * from student";
    sqlitedatabase database=db.getreadabledatabase(); //使用getreadabledatabase取得sqlitedatabase
    cursor cursor=database.rawquery(sql, null); //得到游标,类似resultset
    student stu;
    while(cursor.movetonext()){ //移动游标
      int id=cursor.getint(cursor.getcolumnindex("userid"));
      string name=cursor.getstring(cursor.getcolumnindex("username"));
      stu=new student();
      stu.setuserid(id);
      stu.setusername(name);
      all.add(stu);
    }
    cursor.close(); //关闭游标
    return all;
  }
  public int getcount(){
    string sql="select count(*) from student";
    sqlitedatabase database=db.getreadabledatabase();
    cursor cursor=database.rawquery(sql, null);
    cursor.movetofirst();
    return cursor.getint(0);
  }
}

需要注意的是getreadabledatabase和getwritabledatabase的用法,只是单纯的数据查询就使用getreadabledatabase,对数据进行修改操作就使用后者。另外需要注意sqlite的数据类型是没有任何作用的,只是为了程序员的互相合作。

4. 编写android的junit

package org.lxh.db;
import java.util.arraylist;
import java.util.iterator;
import java.util.list;
import org.lxh.service.dbservice;
import org.lxh.service.studentservice;
import org.lxh.vo.student;
import android.test.androidtestcase;
import android.util.log;
public class test extends androidtestcase{
  public void testsave(){
    dbservice db=new dbservice(this.getcontext());
    db.getwritabledatabase();
  }
  public void testsavestudent(){
    studentservice service=new studentservice(this.getcontext());
    student stu=null;
    list<student> stus=new arraylist<student>();
    for(int i=0;i<10;i++){
      stu = new student();
      stu.setusername("陈亚峰"+i);
      stus.add(stu);
    }
    service.saveperson(stus);
  }
  public void delete(){
    studentservice service=new studentservice(this.getcontext());
    service.delete(11);
  }
  public void findall(){
    studentservice service=new studentservice(this.getcontext());
    list<student> all=service.fiandall();
    iterator<student> it=all.iterator();
    while(it.hasnext()){
      student stu=it.next();
      log.i("test", "id:"+stu.getuserid()+","+"username"+stu.getusername());
    }
  }
  public void findrows(){
    studentservice service=new studentservice(this.getcontext());
    log.i("test",string.valueof(service.getcount()));
  }
}

执行之后生成了数据,id为11的记录已经被删除了

更多关于android相关内容感兴趣的读者可查看本站专题:《android操作sqlite数据库技巧总结》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网