Android中SQLite事务的操作
来源:互联网 发布:优酷网络大电影分成 编辑:程序博客网 时间:2024/06/05 06:17
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);}/** * 数据库第一次创建时调用此方法 * 用于初始化表 */@Overridepublic void onCreate(SQLiteDatabase db) {//SQLiteDatabase对象已经连接数据库,直接进行性数据库操作String sql="create table person(_id integer primary key,name varchar(15),age integer);";db.execSQL(sql);//创建person表}/** * 数据库的版本号更新时调用 * 用于更新数据库的内容(删除表,更新表,删除表) */@Overridepublic 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.从张山扣1000try{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()来标识事务成功。
初学安卓,记录点点滴滴。
0 0
- Android中SQLite事务的操作
- Android SQLite事务操作
- SQLite的事务操作
- Android中的sqlite事务操作
- android中SQLite的操作
- Android中SQLite使用事务
- Android数据存储SQLite - 事务操作
- android sqlite数据库的事务
- 一看就会Android之SQLite中事务的使用
- android中SQLite数据库的操作
- android中SQLite数据库的操作
- Android中SQLite的简单crud操作
- Android中关于SQLite的操作
- Android中,对SQLite的‘批处理’操作
- Android中sqlite的一些操作命令
- Android在SQLite中使用事务
- 在Android SQLite中使用事务
- Android在SQLite中使用事务
- 仿酷狗音乐播放器开发日志十二——播放列表的实现六
- 项目之路
- 在Puppet/Ansible中使用PPA
- HTML5 3D翻书效果(双面效果)
- 仿酷狗音乐播放器开发日志十四——右侧乐库的实现
- Android中SQLite事务的操作
- Reverse an input character string
- B+树
- 将webkit内核封装为duilib的浏览器控件
- Process32First
- hdu 2178 猜数字
- Android Manifest.xml文件解析
- 都获得更好的法国核电规划的风格
- 将VLC库封装为duilib的万能视频播放控件