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(); }
Android中的SQLite数据库,布布扣,bubuko.com
原文:http://blog.csdn.net/zhong1113/article/details/22864553