Android中,数据库事务案例

这里以两个人之间实现银行转账为例:

1、首先,写一个创建数据库并初始化表的工具类MyOpenHelper

public class MyOpenHelper extends SQLiteOpenHelper {
	public MyOpenHelper(Context context ) {
		super(context, "yinhang.db", null, 1);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(20),money varchar(20))");
		db.execSQL("insert into info('name','phone','money') values('张三','138888','2000')");
		db.execSQL("insert into info('name','phone','money') values('李四','139999','5000')");
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub	
	}
}

2、在mainactivity_xml中布局一个按钮并绑定Click事件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="Click"
        android:text="转账" />
</RelativeLayout>

3、最后,在MainActivity.java中

public class MainActivity extends Activity {
	private MyOpenHelper myOpenHelper;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myOpenHelper = new MyOpenHelper(getApplicationContext());
		//打开或创建数据库
		myOpenHelper.getReadableDatabase();
	}
	// 点击按钮进行转账逻辑,这里用到事务
	public void Click(View v) {
		SQLiteDatabase db = myOpenHelper.getReadableDatabase();
		// 使用事务进行转账
		db.beginTransaction();
		try {
			// 实现转账的逻辑,也就是写sql语句
			db.execSQL("update info set money=money-100 where name=?",
					new Object[] { "张三" });
			db.execSQL("update info set money=money+100 where name=?",
					new Object[] { "李四" });
			// 给当前事务设置成功的标记(即try{}内任何一句出错整个try{}块内的代码都不执行)
			db.setTransactionSuccessful();
		} catch (Exception e) {
			Toast.makeText(this, "服务器忙,请稍后操作!", 1).show();
		} finally {
			db.endTransaction();
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值