Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android应用中内嵌SQLite数据库的基本操作指南大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、首先写一个类继承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,@R_673_1648@,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",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","name=?",new String[]{name},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);
    @R_675_9293@umber = db.update("person",values,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});
    @R_675_9293@umber = db.delete("person",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);
    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,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 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);
    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,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,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;
}

大佬总结

以上是大佬教程为你收集整理的Android应用中内嵌SQLite数据库的基本操作指南全部内容,希望文章能够帮你解决Android应用中内嵌SQLite数据库的基本操作指南所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: