美文网首页
数据库:事物操作

数据库:事物操作

作者: biyu6 | 来源:发表于2019-02-26 18:00 被阅读0次

1.数据库的管理类

package com.biyu6.banktransfer;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {

    public MyOpenHelper(Context context) {
        super(context, "Account.db", null, 1);
        
    }

    @Override
    public void onCreate(SQLiteDatabase db) {//数据库第一次创建时调用
        //初始化表结构
        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 ('张三','13888889999','1000')");
        db.execSQL("insert into info ('name','phone','money') values ('李四','15666667777','50000')");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

2.事物操作

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());
        
    }

    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[]{"张三"});
            
            //所谓事物,就是指要么同时成功,要么同时失败;如果在张三扣款后和李四到账前的这里出现了错误,那么张三的钱就不会被扣掉
            int i = 10/0;//模拟崩溃等异常---一旦出错,事物就会回滚,扣掉的就会还原

            db.execSQL("update info set money = money + 100 where name=?",new Object[]{"李四"});
            
            //给当前事物设置一个成功的标记
            db.setTransactionSuccessful();
            
        }catch (Exception e) {
            Toast.makeText(getApplicationContext(), "服务器忙,请稍后重试!", 1).show();
        } finally {//最后
            db.endTransaction();//关闭事物
        }
    }
}

相关文章

  • 数据库:事物操作

    1.数据库的管理类 2.事物操作

  • MySQL之事物处理机制

    事物处理 MySql事物处理机制对于处理数据库并发操作有较大的帮助,大多数存储引擎像Innodb就支持数据库处理机...

  • 15事务处理

    事物处理是一种机制,用来管理必须成批执行的MYSQL操作,以保证数据库不包含不完整的操作结果。利于事物处理。可以保...

  • 关于Mysql事物

    什么是事物(transaction)? 事务是一条或多条DML数据库操作语句的集合,在事务中的操作,要么都执行,要...

  • MySQL数据库管理使用

    RPM安装MySQL 启动数据库操作: 重启数据库操作: 停止数据库操作: 查看数据库状态: 登录数据库操作: 退...

  • Spring事务

    通过Spring中@transactionnl注解进行操作数据库管理,具体做了那些事情? ① 创建事物 creat...

  • python 教程笔记day10

    Python3 MySQL 数据库连接 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 ...

  • 数据优化经验

    (1)批量操作要在一个数据库连接中完成;(2)多个操作要开启事物;(3)查询要开启分页查询。 如有不当、错误之处,...

  • Oracle事物与事务控制

    1、事物的概念 Oracle提供了一种被称为“事物”的控制机制,来对数据进行有效、安全的操作,是数据库中的数据始终...

  • JFinal框架详细教程(二)高级用法

    JFinal独创Db+Record模式 事物 以上两次数据库更新操作在一个事物中执行,如果执行过程中发生异常或者i...

网友评论

      本文标题:数据库:事物操作

      本文链接:https://www.haomeiwen.com/subject/qkrzyqtx.html