当前位置: 移动技术网 > IT编程>移动开发>Android > Android应用中内嵌SQLite数据库的基本操作指南

Android应用中内嵌SQLite数据库的基本操作指南

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

js教程,超级邮件群发,金昌汽车站

一、首先写一个类继承sqliteopenhelper类

重写他的方法指定db的名称、版本,重写oncreat和onupgrade方法,写sql语句创建表

public class mysqliteopenhelper extends sqliteopenhelper {
  private static string name = "person.db";
  private static int version = 1;
  public mysqliteopenhelper(context context){
    super(context,name,null,version);  
  }

  /*
   *数据库第一次被创建时调用的方法
   *db是被创建的数据库
   */
  @override
  public void oncreate(sqlitedatabase db) {
    db.execsql("create table person(id integer primary key autoincrement,name varchar(20),number varchar(20) )");

  }
  /*当数据库版本更新时调用此方法*/
  @override
public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {

  }

二、创建一个dao类对外提供增删改查接口
其中执行增删改查的方法可以用sql语句也可以使用系统给出的api,下面的代码中把两种方法都写了出来

public class persondao {
  private mysqliteopenhelper helper;
  public persondao(){

  }
  public persondao(context context){
    helper = new mysqliteopenhelper(context);
  }
  public void add(string name,string number){
    sqlitedatabase db = helper.getwritabledatabase();
    db.execsql("insert into person (name,number)values(?,?)",new object[]{name,number});
    /*contentvalues values = new contentvalues();
    values.put("number",number);
    values.put("name", name);
    long id = db.insert("person",null, values);*/
    db.close();

  }
  public boolean find(string name){
    sqlitedatabase db = helper.getwritabledatabase();
    //cursor cursor = db.rawquery("select *from person where name=?", new string[]{name});
    cursor cursor = db.query("person", null,"name=?",new string[]{name},null,null, null);
    boolean result =cursor.movetonext();
    cursor.close();
    db.close();
    return result;    
  }
  public int update(string name,string newnumber){
    sqlitedatabase db = helper.getwritabledatabase();
    //db.execsql("update person set number=? where name=?",new object[]{newnumber,name});
    contentvalues values = new contentvalues();
    values.put("number",newnumber);
    int number = db.update("person", values,"name=?",new string[]{newnumber});
    db.close();
    return number;
  }
  public int delet(string name){
    sqlitedatabase db = helper.getwritabledatabase();
    //db.execsql("delete from person where name=?",new string[]{name});
    int number = db.delete("person","name=?",new string[]{name});
    db.close();  
    return number;

  }
  public list<person> findall(){
    list<person> persons = new arraylist<person>();
    sqlitedatabase db = helper.getwritabledatabase();
    //cursor cursor = db.rawquery("select *from person", null);
    cursor cursor = db.query("person",new string[]{"id","name","number"}, null, null, null, null, null);
    while (cursor.movetonext()) {
      int id = cursor.getint(cursor.getcolumnindex("id"));
      string name = cursor.getstring(cursor.getcolumnindex("name"));
      string number = cursor.getstring(cursor.getcolumnindex("number"));
      person p = new person();
      persons.add(p);

    }
    db.close();
    cursor.close();
    return persons; 

  }

}

三、增删改查操作

import android.content.contentvalues;
import android.content.context;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
 
public class tododb extends sqliteopenhelper {
  private final static string database_name = "todo_db";
  private final static int database_version = 1;
  private final static string table_name = "todo_table";
  public final static string field_id = "_id";
  public final static string field_text = "todo_text";
 
  public tododb(context context) {
    super(context, database_name, null, database_version);
  }
 
  @override
  public void oncreate(sqlitedatabase db) {
    /* 建立table */
    string sql = "create table " + table_name + " (" + field_id
        + " integer primary key autoincrement, " + " " + field_text
        + " text)";
    db.execsql(sql);
  }
 
  @override
  public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {
    string sql = "drop table if exists " + table_name;
    db.execsql(sql);
    oncreate(db);
  }
 
  public cursor select() {
    sqlitedatabase db = this.getreadabledatabase();
    cursor cursor = db
        .query(table_name, null, null, null, null, null, null);
    return cursor;
  }
 
  public long insert(string text) {
    sqlitedatabase db = this.getwritabledatabase();
    /* 将新增的值放入contentvalues */
    contentvalues cv = new contentvalues();
    cv.put(field_text, text);
    long row = db.insert(table_name, null, cv);
    return row;
  }
 
  public void delete(int id) {
    sqlitedatabase db = this.getwritabledatabase();
    string where = field_id + " = ?";
    string[] wherevalue = { integer.tostring(id) };
    db.delete(table_name, where, wherevalue);
  }
 
  public void update(int id, string text) {
    sqlitedatabase db = this.getwritabledatabase();
    string where = field_id + " = ?";
    string[] wherevalue = { integer.tostring(id) };
    /* 将修改的值放入contentvalues */
    contentvalues cv = new contentvalues();
    cv.put(field_text, text);
    db.update(table_name, cv, where, wherevalue);
  }
}

四、写一个javabean设置他的get、set方法

public class person { 
  private int id;
  private string name;
  private string number;

  public person(){

  }

  public person(int id, string name, string number) {
    this.id = id;
    this.name = name;
    this.number = number;
  }
  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 getnumber() {
    return number;
  }
  public void setnumber(string number) {
    this.number = number;
  }

}

五、mainactivity中使用它

private sqliteopenhelper helper;
persondao dao = new persondao();

helper = new mysqliteopenhelper(this);
helper.getwritabledatabase();    
sqlitedatabase db = helper.getwritabledatabase();

六、关于数据库的事务处理
android开发中数据库的操作非常慢,将所有操作打包成一个事务能够大大的提高处理速度,其中最重要的是保证了数据的一致性,让事务中的所有操作都能成功执行,或者失败,或者这所有操作都回滚。

sqlitedatabase db = helper.getwritabledatabase();
db.begintransaction();
try{

 //在这里执行多个数据库操作,执行过程中可能会抛出异常
 db.execsql("update person set number=? where name=?",new object[]{"1",jacky});
 db.execsql("update person set number=? where name=?",new object[]{"2","sunny"});
 db.settransactionsuccessful();
}catch{
 //捕获异常
 throw e;
}finally{
  //所有操作完成结束一个事务
  db.endtransaction();
  db.close;
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网