欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-10-29 16:39:32
本文实例讲述了android开发之使用sqlite存储数据的方法。分享给大家供大家参考,具体如下: 前面已经说到了几种文件的操作如sharedreference,sdca...

本文实例讲述了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开发之使用SQLite存储数据的方法分析

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

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

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