1.创建一个数据库帮助类。
package com.wzw.sqllitedemo.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
*
* 数据库帮助类,用于创建管理数据库
* @author Administrator
*
*/
public final class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
private String tag="PersonSQLiteOpenHelper";
/**
* 数据库的构造函数
* @param context
* @param name 数据库名称
* @param factory 游标工厂
* @param version 版本
*/
public PersonSQLiteOpenHelper(Context context) {
super(context, "my.db", null, 2);
}
/**
* 数据库第一次创建时调用此方法
* 用于初始化表
*/
@Override
public void onCreate(SQLiteDatabase db) {
//SQLiteDatabase对象已经连接数据库,直接进行性数据库操作
String sql="create table person(_id integer primary key,name varchar(15),age integer);";
db.execSQL(sql); //创建person表
}
/**
* 数据库的版本号更新时调用
* 用于更新数据库的内容(删除表,更新表,删除表)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion==1&&newVersion==2){
//数据库更新,增加balance余额列,事务的处理
Log.i(tag, "数据库更新了");
db.execSQL("alter table person add balance integer");
}
}
}
数据库表person中分别有id,name,age,banlance列
2.创建一个junit test类来测试
package com.wzw.sqllitedemo.test;
import java.util.List;
import com.wzw.sqllitedemo.dao.PersonDao;
import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper;
import com.wzw.sqllitedemo.entities.Person;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;
public class TestCase extends AndroidTestCase {
private String tag="TestCase";
public void test(){
//数据库什么时候创建
PersonSQLiteOpenHelper openHelp=new PersonSQLiteOpenHelper(getContext());
//第一次连接数据库的时创建数据库,oncreate调用
openHelp.getWritableDatabase();
}
public void testTransaction(){
PersonSQLiteOpenHelper openHelper=new PersonSQLiteOpenHelper(getContext()); //获取数据库帮助类
SQLiteDatabase db=openHelper.getWritableDatabase();//获得可写数据库
if(db.isOpen()){
//如果数据库可读,进行操作
//1.从张山扣1000
try{
db.beginTransaction();
db.execSQL("update person set balance=balance-1000 where name='zhangsan';");
//ATM出异常
//int tes=1/0;
//2.向李四加1000元
db.execSQL("update person set balance=balance+1000 where name='lisi';");
db.setTransactionSuccessful();//标记事务成功!
}finally{
db.endTransaction();
db.close();
}
}
}
}
事务中必须调用setTransactionSuccessful()来标识事务成功。
初学安卓,记录点点滴滴。