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