SQLite数据库总结二

这个总结主要对一些细节进行总结。

第一个是关于事务的用法,事务的解释,我的理解就是让一个完整的流程执行完,如果其中流程中一项事情失败了,整个事务就无法执行,最生动的例子就是银行存钱那个了。

这里主要介绍事务的三个主要方法:

beginTransaction()——开启事务,事务的开始。

TransactionSuccessful()——事务成功执行,可以理解为事务执行完毕

endTransaction()——关闭事务,结束事务


具体代码如下:

case R.id.shiwu:
              /*
              * 这里通过开启事务让删除数据和添加数据同时成功*/
                SQLiteDatabase db4 = dbhelper.getWritableDatabase();
                db4.beginTransaction();//开始事务
                    try {
                        db4.delete("Book", null, null);
                        if (true) {
                            throw new NullPointerException();
                        }
                        ContentValues values2 = new ContentValues();
                        values2.put("name", "jing");
                        values2.put("author", "jing");
                        values2.put("pages", 100);
                        values2.put("price", "66");
                        db4.insert("Book", null, values2);
                        db.setTransactionSuccessful();//事务已经成功执行
                    } catch (NullPointerException e) {
                        e.printStackTrace();
                    } finally {
                        db4.endTransaction();//结束事务
                    }



第二个是关于数据库升级,对于数据库升级,我们并不能在oncreate方法里面写建表,然后再updata方法里面强制执行oncreate方法,这种方式是很粗鲁的!

最理想的方式,是引入版本号的概念,每次升级数据库,就相当于更新一个新的版本,在oncreate方法里面写所有版本下的表,然后再updata方法下根据版本号判断,执行相应的表增加或者表修改。(就是如果你是第一次安装,就会直接安装oncreate方法里的所有表,一次更新到最新,如果不是,就在updata里找到自己的版本号,更新相应的内容,这个意思来理解)

OK,解释完毕后,以下是相关的代码

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_BOOK);
//        Toast.makeText(mcontext,"create successed",Toast.LENGTH_SHORT).show();
        /*
        * 在这里添加所有版本的内容,即为所有表
        * 比如db.execSQL(one)
        *     db.execSQL(two)
        *     db.execSQL(three)
        *     db.execSQL(four)
        *     */

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        /*
        * 这里添加每个版本号的新增内容*/
        switch (oldVersion){
            case 1:
                db.execSQL(CREATE_BOOK);
            case 2:
                //db.execSQL(one)等
            case 3:
                //db.execSQL("alter table Book add column category_id integer") 新增表里的数据
                default:
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值