1、创建SQLiteOpenHelper的派生类 DBOpenHelpter,数据库操作的负责类(DB):
public class DBOpenHelpter extends SQLiteOpenHelper {
public DBOpenHelpter(Context context) {
//第二个文件名 ,弟三个游标工程null为系统默认,弟4个版本号
super(context, "itcast.db", null, 2);
// TODO Auto-generated constructor stub
}
/**
* 第一次创建时调用
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE person( personid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,name TEXT,age INTEGER)");
}
/**
* 版本发生变化时调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 当旧版本为2是才进行数据库的修改
if(oldVersion==1)
{
db.execSQL("ALTER TABLE person ADD phone TEXT");
}
}
}
2、数据表对于的模板(mould):
public class person {
private Integer id;
private String name;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "person [id=" + id + ", name=" + name + ", phone=" + phone + "]";
}
public person(Integer id, String name, String phone) {
this.id = id;
this.name = name;
this.phone = phone;
}
//添加数据是不需要ID
public person(String name, String phone) {
this.name = name;
this.phone = phone;
}
public person(){
}
}
3、实现数据的增删改(DB):
public class personservice {
private DBOpenHelpter dbopenhelp;
public personservice(Context context) {
this.dbopenhelp =new DBOpenHelpter(context);
}
/**
* 添加记录
* @param p
*/
public void save(person p){
SQLiteDatabase db=dbopenhelp.getWritableDatabase();
db.execSQL("insert into person(name,phone) values(?,?)",new Object[]{p.getName(),p.getPhone()});
}
/**
* 修改记录
* @param p
*/
public void update(person p){
SQLiteDatabase db=dbopenhelp.getWritableDatabase();
db.execSQL("update person set name=? , phone=? where personid=?",new Object[]{p.getName(),p.getPhone(),p.getId()});
}
/**
* 删除记录
* @param id
*/
public void del(int id){
SQLiteDatabase db=dbopenhelp.getWritableDatabase();
db.execSQL("delete from person where personid=?",new Object[]{id});
}
/**
* 查找记录
* @param id
* @return
*/
public person find(int id){
SQLiteDatabase db=dbopenhelp.getReadableDatabase();
Cursor curser= db.rawQuery("select * from person where personid=?",new String[]{id+""});
if(curser.moveToFirst()){
int personid=curser.getInt(curser.getColumnIndex("personid"));
String name=curser.getString(curser.getColumnIndex("name"));
String phone=curser.getString(curser.getColumnIndex("phone"));
return new person(personid,name,phone);
}
curser.close();
return null;
}
/**
* 分页记录
* @param offset 跳过前面多少条记录
* @param maxResult 显示多少条记录
* @return
*/
public List<person> getPage(int offset,int maxResult)
{
List<person> lp=new ArrayList<person>();
SQLiteDatabase db=dbopenhelp.getReadableDatabase();
Cursor curser= db.rawQuery("select * from person order by personid asc limit ?,?",new String[]{String.valueOf(offset),String.valueOf(maxResult)});
while(curser.moveToNext()){
int personid=curser.getInt(curser.getColumnIndex("personid"));
String name=curser.getString(curser.getColumnIndex("name"));
String phone=curser.getString(curser.getColumnIndex("phone"));
lp.add(new person(personid,name,phone));
}
curser.close();
return lp;
}
/**
* 总共多少条记录
* @return
*/
public long getcount(){
SQLiteDatabase db=dbopenhelp.getReadableDatabase();
Cursor curser= db.rawQuery("select count(*) from person",null);
curser.moveToFirst();
long i=curser.getLong(0);
curser.close();
return i;
}
}
4、调用上面的增删改方法(DLL):
/**
* 分页显示记录
*/
private void ShowNum(personservice p) {
List<person> lp= p.getPage(0, 5);
for( person item : lp)
{
Log.i("Tag",item.toString());
}
}
启动时调用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
personservice p=new personservice(this);
for(int i=0;i<20;i++)
{
p.save(new person("lili"+i,"123123"+i));
}
ShowNum(p);
//修改用户信息
p.update(new person (1,"ddd","dddd"));
ShowNum(p);
//删除记录
p.del(2);
//查找一条记录
person y=p.find(1);
Log.i("Tag",y.toString());
Log.i("Tag","共"+p.getcount());
}
5、运行标记为: