这里以两个人之间实现银行转账为例:
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();
}
}
}