android 數據庫sqlite 增刪改查和數據庫事務

使用系統api實現數據庫的增刪改查好處
1:不容易出錯
2:能知道返回結果

1:創建數據庫

public class NewPerSonDb extends SQLiteOpenHelper {

	/**
	 * 創建一個數據庫 context 爲上下問, name數據庫名字要包含後綴 ,factory默認爲null表示用系統的 version數據庫版本
	 * 
	 * @param context
	 * @param name
	 * @param factory
	 * @param version
	 */
	public NewPerSonDb(Context context) {
		// 當數據版本號大於原始值時纔會調用onUpgrade
		super(context, "person.db", null, 3);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person (id integer ,name varchar(20),number varchar(20))");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("alter table person add account varchar(20)");
	}

}

2:管理數據庫

	Cursor cursorb = db.query("person", null, "name=" + "'" + name + "'",
				null, null, null, null);
		Boolean dbBoolean = cursor.moveToNext();
		cursor.close();
		db.close();
		return dbBoolean;
	}

	public int update(String name, String number) {
		SQLiteDatabase db = helPerSonDb.getWritableDatabase();
		// db.execSQL("update person set number=? where name=?", new Object[] {
		// number, name });
		ContentValues values = new ContentValues();
		values.put("number", number);
		int type = db.update("person", values, "name=?", new String[] { name });
		// 大於等於1成功
		db.close();
		return type;
	}

	public int delete(String name) {
		SQLiteDatabase db = helPerSonDb.getWritableDatabase();
		// db.execSQL("delete from person where name=?", new Object[] { name });
		int type = db.delete("person", "name=?", new String[] { name });
		// 大於等於1成功
		db.close();
		return type;
	}

	public List findAlll() {
		SQLiteDatabase db = helPerSonDb.getReadableDatabase();
		ArrayList persons = new ArrayList();
		// Cursor cursor = db.rawQuery("select * from person ", null);
		// ACS從小到大排序 DESC從大到小排序
		Cursor cursor = db.query("person", null, null, null, null, null, null);
		while (cursor.moveToNext()) {
			int id = cursor.getInt(cursor.getColumnIndex("id"));
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String number = cursor.getString(cursor.getColumnIndex("number"));
			Person person = new Person(id, name, number);
			persons.add(person);
		}
		cursor.close();
		db.close();
		return persons;
	}

	// 數據庫事物
	public void testAccount() {
		add("lsq", "123456", 1000);
		add("dxy", "888888", 2000);
	}

	String ssString = null;

	public void testTransAccount() {
		SQLiteDatabase db = helPerSonDb.getWritableDatabase();
		db.beginTransaction();
		try {
			db.execSQL("update person set account=account-100 where name=?",
					new Object[] { "lsq" });
			ssString.equals("dd");
			db.execSQL("update person set account=account+100 where name=?",
					new Object[] { "dxy" });
			db.setTransactionSuccessful();
		} catch (Exception e) {
			Log.v("ceshi","轉賬失敗!");
		} finally {
			db.endTransaction();
			db.close();
		}

	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章