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;
}
}