Android中的SQLite数据库

来源:互联网 发布:公司记账软件免费版 编辑:程序博客网 时间:2024/05/17 09:41

SQLite是一种轻量级的关系型数据库,它体积小,零配置,可以直接运行在应用程序的进程中,非常适合嵌入式的操作系统。

首先要创建一个SQLite数据库

通过类来实现SQLiteHelper这个抽象类,

public class PersonSqliteHelper extends SQLiteOpenHelper {

public PersonSqliteHelper(Context context) {super(context, "person.db", null, 1);}
里面有四个参数分别是context,数据库名称,工厂,和版本

传的参数本来有四个,只需要保留一个就好了。

public void onCreate(SQLiteDatabase db) {db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))");}
onCreate是数据库第一次被创建时调用的方法

这些还没有真正的创建数据库

PersonSqliteHelper p=new PersonSqliteHelper(this);p.getWritableDatabase();

这样才算创建了一个数据库。

有getReadableDatabase()和getWritableDatabase()两个方法可用。

下面通过一些常见的操作来演示一下SQLite的增删该查操作

private PersonSqliteHelper helper;// 在构造函数里完成helper的初始化public PersonDao(Context context) {helper = new PersonSqliteHelper(context);}


添加数据


 /*** 添加一条数据到数据库 * @param name 姓名 * @param number 电话号码 * @return 返回插入的数据的id * */private boolean find(String name) {SQLiteDatabase db = helper.getReadableDatabase();Cursor cursor = db.query("person", null, "name=?",new String[] { name }, null, null, null);boolean result = cursor.moveToNext();cursor.close();db.close();return result;}

在上面的代码中首先通过ContentValues创建了一个容器,然后通过put()方法将数据添加到ContentValues容器中,最后通insert()方法再分配到数据表中。

返回的值是新创建的一行的id.


查询数据


/** * 查询一条记录是否存在 * @param name 姓名 * @return true 存在 false 不存在 * */private boolean find(String name) {SQLiteDatabase db = helper.getReadableDatabase();Cursor cursor = db.query("person", null, "name=?",new String[] { name }, null, null, null);boolean result = cursor.moveToNext();cursor.close();db.close();return result;}



修改数据


 /** * 修改一条记录 * @param name 要修改信息的人的姓名 * @param newNumber 新的电话号码 * @return 返回受影响的记录的条数 * */private int updata(String name,String newNumber){SQLiteDatabase db=helper.getWritableDatabase();ContentValues values=new ContentValues();values.put("number", newNumber);int numbers=db.update("person", values, "name=?", new String[]{name});db.close();return numbers;}


删除数据


/** * 删除一条数据 * @param name 姓名 * */private int del(String name){SQLiteDatabase db=helper.getWritableDatabase();int number=db.delete("person", "name=?", new String[]{name});db.close();return number;}


查询数据


/** * 返回全部的数据信息 * */public List<Person> findAll(){SQLiteDatabase db=helper.getReadableDatabase();List<Person> persons=new ArrayList<Person>();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(id, name, number);persons.add(p);}cursor.close();db.close();return persons;}}

数据库中的事物

所谓的事务处理就是保证操作的完整性,所有操作要么同时成功,要么同时失败。

在SQLite中,事物的使用方法如下:

1、首先通过beginTransation()开始一个事物。

2、通过setTransactionSuccessful()设置一个事物成功的标志。

3、如果调用了以上第二步则成功地提交了事物,结束事物,否则回滚事物。方法为endTransaction().

比如:

db.beginTransaction();try {......//其他部分语句体db.setTransactionSuccessful();}finally{db.endTransaction();}




0 0
原创粉丝点击