Android数据库的增删改查和ListView以及页面跳转的实现(一)

2015-02-02 20:09:26 · 作者: · 浏览: 39
不多说什么,直接看代码:先创建一个person实体对象。
import java.io.Serializable;

public class Person implements Serializable{
	private static final long serialVersionUID=1L;
	private Integer id;
	private String name;
	private String phone;
	private Integer amount;
	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;
	}
	public Integer getAmount() {
		return amount;
	}
	public void setAmount(Integer amount) {
		this.amount = amount;
	}
	public Person(String name, String phone, Integer amount) {
		super();
		this.name = name;
		this.phone = phone;
		this.amount = amount;
	} 
	public Person(int id,String name, String phone, Integer amount) {
		super();
		this.id=id;
		this.name = name;
		this.phone = phone;
		this.amount = amount;
	} 

	

} 创建DBOpenHelper类通过继承SQLiteOpenHelper类来实现数据库的创建和更新。重写SQLiteOpenHelper 的onCreate、onUpgrade方法

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBOpenHelper extends SQLiteOpenHelper {

	private static final String tag="DBSQLiteHelper";
	private static final String name="bobge.db";
	private static final int version=1;
	public DBOpenHelper(Context context) {
		super(context, name, null, version);
		Log.v(tag, "构造器");
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),phone varchar(20),amount integer)");  
        Log.v(tag, "
数据库
创建执行一次"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS person"); onCreate(db); } }

创建PersonDao类实现对person实体数据的增删改查操作。

getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
注意:getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会,所以如果不是更新数据库的话,最好调用后者来获得数据库连接。

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import dbSQLiteOPenHelper.db.domain.Person;
import dbSQLiteOPenHelper.service.DBOpenHelper;

public class PersonDao {
	private DBOpenHelper dbOpenHelper;
	
	public PersonDao(Context context) {
		this.dbOpenHelper = new DBOpenHelper(context);
	}
	public void save(Person person){
		SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
		db.execSQL("insert into person(name,phone,amount) values (?,?,?)",
		new Object[]{person.getName(),person.getPhone(),person.getAmount()});
		
	}
	public void delete(Integer id){
		SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
		db.execSQL("delete from person where id=?",
		new Object[]{id});
	}
	public void update(Person person){
		SQLiteDatabase