1. 程式人生 > >Android 資料儲存與讀取:SQLite

Android 資料儲存與讀取:SQLite

在Android平臺上,集成了一個嵌入式關係型資料庫—SQLite。如果你想要開發 Android 應用程式,一定需要在 Android 上儲存資料,使用SQLite 資料庫是一種非常好的選擇。

下面介紹的基本使用:

是一個抽象類不能直接例項化,所以新建一個類DBOpenHelper繼承自SQLiteOpenHelper :

public class DBOpenHelper extends SQLiteOpenHelper {
	public DBOpenHelper(Context context) {
		super(context, "yhn.db", null, 1);
	}

	//資料庫第一次建立時候呼叫,
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table user(uid integer primary key autoincrement, uname varchar(20), uaddress varchar(20))");
	}

	//資料庫檔案版本號發生變化時呼叫
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

	}

如果執行上邊的程式碼,則會建立一個數據庫檔案xx.db



資料庫操作類:
public class DBDao {
	DBOpenHelper dbOpenHelper;
	
	public DBDao(Context context){
		this.dbOpenHelper=new DBOpenHelper(context);
	}
	/**
	 * 新增一條資料
	 * @param user
	 */
	public void save(User user){
		SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
		db.execSQL("insert into user(uname,uaddress) values(?,?)", new Object[]{user.getUname(),user.getUaddress()});
		db.close();
	}
	/**
	 * 刪除一條資料
	 * @param uid
	 */
	public void delete(Integer uid){
		SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
		db.execSQL("delete from user where uid=?", new Object[]{uid});
		db.close();
	}
	/**
	 * 更新一條資料
	 * @param user
	 */
	public void update(User user){
		SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
		db.execSQL("update user set uname=?,uaddress=? where uid=?", new Object[]{user.getUname(),user.getUaddress(),user.getUid()});
		db.close();
	}
	/**
	 * 查詢一條資料
	 * @param uid
	 */
	public User find(Integer uid){
		SQLiteDatabase db=dbOpenHelper.getReadableDatabase();
		Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()});
		if(cursor.moveToFirst()){
			int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
			String uname=cursor.getString(cursor.getColumnIndex("uname"));
			String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
			User user=new User();
			user.setUid(uid2);
			user.setUname(uname);
			user.setUaddress(uaddress);
			return user;
		}
		cursor.close();
		return null;
	}
	/**
	 * 分頁查詢資料
	 * @param offset 跳過多少條資料
	 * @param maxResult 每頁多少條資料
	 * @return 
	 */
	public List<User> getScrollData(int offset, int maxResult){
		List<User>users=new ArrayList<User>();
		SQLiteDatabase db=dbOpenHelper.getReadableDatabase();
		Cursor cursor =db.rawQuery("select * from user order by uid asc limit ?,?", new String[]{String.valueOf(offset), String.valueOf(maxResult)});
		while(cursor.moveToNext()){
			int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
			String uname=cursor.getString(cursor.getColumnIndex("uname"));
			String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
			User user=new User();
			user.setUid(uid2);
			user.setUname(uname);
			user.setUaddress(uaddress);
			users.add(user);
		}
		return users;
	}
	/**
	 * 獲取資料總數
	 * @return
	 */
	public long getCount(){
		SQLiteDatabase db=dbOpenHelper.getReadableDatabase();
		Cursor cursor =db.rawQuery("select count(*) from user", null);
		cursor.moveToFirst();
		long reslut=cursor.getLong(0);
		return reslut;
	}
}

示例:向資料庫中新增一條資料
DBDao dbDao=new DBDao(this);
        User user=new User();
        user.setUname("qixiaohu");
        user.setUaddress("chengdu");
        dbDao.save(user);

PC上管理SQLite資料庫的方法:


上邊新增資料後可以看到資料新增成功: