Android中的SQLite数据库

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值