[转帖]Android入门开发之在SQLite中使用事务_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3461 | 回复: 0   主题: [转帖]Android入门开发之在SQLite中使用事务        下一篇 
周逸涵
注册用户
等级:少校
经验:871
发帖:83
精华:0
注册:2013-7-8
状态:离线
发送短消息息给周逸涵 加好友    发送短消息息给周逸涵 发消息
发表于: IP:您无权察看 2013-7-9 10:16:53 | [全部帖] [楼主帖] 楼主

银行转账

1)update person set amount=amount-10 where personid=1;

2)update person set amount=amount+10 where personid=2;

以上个例子为基础,修改DBOpenHelper类,增加amount字段升级数据库

[java]view plaincopy

  1. package cn.leigo.service; 
  2. import android.content.Context; 
  3. import android.database.sqlite.SQLiteDatabase; 
  4. import android.database.sqlite.SQLiteOpenHelper; 
  5. public class DBOpenHelper extends SQLiteOpenHelper { 
  6.       
  7.        public DBOpenHelper(Context context) { 
  8.              super(context, "leigo.db", null, 3); //<包>/databases/ 
  9.        } 
  10.       
  11.        @Override 
  12.        public void onCreate(SQLiteDatabase db) {// 数据库第一次被创建的时候调用的 
  13.              db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))"); 
  14.        } 
  15.       
  16.        @Override 
  17.        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
  18.              db.execSQL("ALTER TABLE person ADD amount integer"); 
  19.        } 
  20.       



在Person类中增加amount变量:

[java]view plaincopy

  1. package cn.leigo.domain; 
  2. public class Person { 
  3.        private Integer id; 
  4.        private String name; 
  5.        private String phone; 
  6.        private Integer amount; 
  7.       
  8.        public Person() { 
  9.        } 
  10.       
  11.        public Person(String name, String phone, Integer amount) { 
  12.              this.name = name; 
  13.              this.phone = phone; 
  14.              this.amount = amount; 
  15.        } 
  16.       
  17.        public Person(Integer id, String name, String phone, Integer amount) { 
  18.              this.id = id; 
  19.              this.name = name; 
  20.              this.phone = phone; 
  21.              this.amount = amount; 
  22.        } 
  23.       
  24.        public Integer getId() { 
  25.              return id; 
  26.        } 
  27.       
  28.        public void setId(Integer id) { 
  29.              this.id = id; 
  30.        } 
  31.       
  32.        public String getName() { 
  33.              return name; 
  34.        } 
  35.       
  36.        public void setName(String name) { 
  37.              this.name = name; 
  38.        } 
  39.       
  40.        public String getPhone() { 
  41.              return phone; 
  42.        } 
  43.       
  44.        public void setPhone(String phone) { 
  45.              this.phone = phone; 
  46.        } 
  47.       
  48.        public Integer getAmount() { 
  49.              return amount; 
  50.        } 
  51.       
  52.        public void setAmount(Integer amount) { 
  53.              this.amount = amount; 
  54.        } 
  55.       
  56.        @Override 
  57.        public String toString() { 
  58.              return "Person [id=" + id + ", name=" + name + ", phone=" + phone 
  59.              + ", amount=" + amount + "]"; 
  60.        } 
  61.       



修改报错的类

更新数据

[java]view plaincopy

  1. public void testUpdateAmount() throws Exception { 
  2.        PersonService service = new PersonService(getContext()); 
  3.        Person person1 = service.find(1); 
  4.        Person person2 = service.find(2); 
  5.        person1.setAmount(100); 
  6.        person2.setAmount(50); 
  7.        service.update(person1); 
  8.        service.update(person2); 



北京联动北方科技有限公司

[java]view plaincopy

  1. public void payment() { 
  2.        SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); 
  3.        // 开启事务 
  4.        db.beginTransaction(); 
  5.        db.execSQL("UPDATE person SET amount=amount-10 where personid=1"); 
  6.        //System.out.println(1/0); 
  7.        db.execSQL("UPDATE person SET amount=amount+10 where personid=2"); 
  8.        db.setTransactionSuccessful(); 
  9.        // 结束事务,有两种情况:commit、rollback 
  10.        // 事务的提交或者回滚是由事务的标识决定的,如果事务的标识为true,事务就会提交否则回滚,默认情况下事务的标识为false 
  11.        db.endTransaction(); 
  12.        db.close(); 
  13.       

[java]view plaincopy

  1. public void testPayment() throws Exception { 
  2.        PersonService service = new PersonService(getContext()); 
  3.        service.payment(); 



北京联动北方科技有限公司


[java]view plain




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论