Android SQLite事务操作
1. 新建DBOpenHelper继承自SQLiteOpenHelper类:
public class DBOpenHelper extends SQLiteOpenHelper {
private final static String DATABASENAME = "itcast.db" ;
private final static int DATABASEVERSION = 2 ;
public DBOpenHelper (Context context) {
super (context, DATABASENAME, null , DATABASEVERSION);
}
@Override
public void onCreate (SQLiteDatabase db) {
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))" );
}
@Override
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("old" , oldVersion +"" );
Log.i("new" , newVersion + "" );
db.execSQL("ALTER TABLE person ADD amount integer" );
}
}
2.新建对应数据库中表的字段的JavaBean数据类:
public class Person {
private Integer id;
private String name;
private Integer amount;
public Person () {
}
public Person (Integer id, String name, Integer amount) {
super ();
this .id = id;
this .name = name;
this .amount = amount;
}
public Integer getId () {
return id;
}
public void setId (Integer id) {
this .id = id;
}
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public Integer getAmount () {
return amount;
}
public void setAmount (Integer amount) {
this .amount = amount;
}
@Override
public String toString () {
return "Person [id=" + id + ", name=" + name + ", amount=" + amount
+ "]" ;
}
}
3. 新建事务操作方法:
public void payment () {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
try {
db.execSQL("update person set amount=amount-10 where personid=?" , new Object[]{1 });
db.execSQL("update person set amount=amount+10 where personid=?" , new Object[]{2 });
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
4.新建单元测试类对业务类中的方法进行测试:
public void testpayment () throws Exception {
DBService dbService = new DBService(this .getContext());
dbService.payment();
}