读书人

android之数据库的应用案例

发布时间: 2012-10-13 11:38:17 作者: rapoo

android之数据库的使用案例

Android中采用的数据库是一个轻量级的数据库SQLite,在使用这个数据库时不用再导包,

,使用SQLite数据库时,首先要继承SQLiteOpenHelper,SQLiteOpenHelper是一个用于数据库的创建和管理的类,子类通过实现onCrate来实现数据库的创建,通过实现onUpGrade来实现数据库版本的控制。

通过下面具体代码来了解一下如何创建一个数据库:

public classMyDBOpenHelper extends SQLiteOpenHelper{

//这是构造方法,通过构造方法可以创建一个名为hello.db的数据库

//构造函数可以只传一个代表上下文的Context变量,也可以传入数据库名称,游//标工厂,数据库版本号。当然,后面这三个参数也可以通过调用父类的构造函数//时传入。第三个参数传入null时,默认使用默认的游标工厂。

public MyDBOpenHelper(Contextcontext) {

super(context,"hello.db",null,1);

}

//数据库第一次创建时调用,在这里面可以在数据库名为hello.db下创建一张表。

@Override

public void onCreate(SQLiteDatabasedb) {

System.out.println("数据库创建");

db.execSQL("create table person (id INTEGER primary keyautoincrement,name varchar(20),balance varchar(20))");

}

//onUpGrade是通过检查数据库版本是否改变,如果改变了则执行该方法,否则不执行

@Override

public voidonUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {

// TODO Auto-generated method stub

}

}

通过实例化MyDBOpenHelper类可以对已经创建的数据库进行增删改查。

public classClassicPersonDAO {

Contextcontext;

MyDBOpenHelperdb;

publicClassicPersonDAO(Context context) {

this.context = context;

db = newMyDBOpenHelper(context);// 创建dbopenHelper

}

// 插入

public void insert(Person p) {

// 获得一个可写的数据库

SQLiteDatabasedataBase = db.getWritableDatabase();

// 向数据库中插入一条数据

dataBase.execSQL("insert into person (name,balance)values(?,?)",

new Object[] { p.getName(),p.getBalance() });

dataBase.close();// 将数据库关闭

}

// 删除一条数据

public void delete(int id) {

SQLiteDatabasedatabase = db.getWritableDatabase();

database.execSQL("delete from person where id=?",newObject[] { id+ "" });

database.close();

}

// 更新数据库中的某条记录

public void update(Person p) {

SQLiteDatabasedata = db.getWritableDatabase();

data.execSQL("update person set name=?,balance=? where id=?",

new Object[] { p.getName(),p.getBalance(), p.getId() });

data.close();

}

// 根据id查询数据

public Person query(int i) {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person whereid=?",

new String[] { i +"" });

Personp = newPerson();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

p.setId(id);

p.setName(name);

p.setBalance(balance);

}

db.close();

return p;

}

// 查询全部

public List<Person>queryAll() {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person",null);

List<Person>list = newArrayList<Person>();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

Personp = newPerson();

p.setId(id);

p.setName(name);

p.setBalance(balance);

list.add(p);

}

return list;

}

// 分页查询

public List<Person>queryPage() {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person limit20,30",null);

List<Person>list = newArrayList<Person>();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

Personp = newPerson();

p.setId(id);

p.setName(name);

p.setBalance(balance);

list.add(p);

}

return list;

}

}

读书人网 >其他数据库

热点推荐