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

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值