sqlite(2、事务)

sqlite默认每条执行语句都是一个事务,因此增加事务除了会进行原子性的保护外,也可提升性能,减少磁盘操作。使用SQLite的beginTransaction()方法可以开启一个事务,执行到endTransaction()方法是会检查事务的标志是否为成功,如果成功则提交事务,否则回滚事务。

当应用程序需要提交事务,必须在程序到endTransaction()方法之前使用setTransactionSuccessfull()方法设置事务的标志为成功。若果如果不调用setTransactionSuccessful()不设置事务标志的话,默认回滚。

程序实例如下:

SQLiteDatabase db = openOrCreateDatabase("demo.db", this.MODE_PRIVATE, null);
        db.execSQL("CREATE TABLE IF NOT EXISTS users (_id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR, password VARCHAR)");
        //开启事务
        db.beginTransaction();
        try
        {
             db.execSQL("INSERT INTO users VALUES (NULL,‘fredric1‘,‘fredricpassword1‘)");
             db.execSQL("INSERT INTO users VALUES (NULL,‘fredric2‘,‘fredricpassword2‘)");
             db.execSQL("INSERT INTO users VALUES (NULL,‘fredric3‘,‘fredricpassword3‘)");
             db.execSQL("INSERT INTO users VALUES (NULL,‘fredric4‘,‘fredricpassword4‘)");
            //设置事务标志为成功,当结束事务时就会提交事务
            db.setTransactionSuccessful();
        }
        finally
        {
            //结束事务
            db.endTransaction();
            Cursor cursor = db.rawQuery("SELECT * FROM users", null);

             while (cursor.moveToNext()) { 

                 Log.i(TAG_ACTIVITY, cursor.getString(cursor.getColumnIndex("username")));
                 Log.i(TAG_ACTIVITY, cursor.getString(cursor.getColumnIndex("password")));
             }

             cursor.close();
        }
    }
时间: 2024-11-05 17:29:28

sqlite(2、事务)的相关文章

sqlite的事务和锁,很透彻的讲解 【转】

原文:sqlite的事务和锁 http://3y.uu456.com/bp-877d38906bec097sf46se240-1.html 事务 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行.事务的典型实例是转帐. 事务的范围 事务由3个命令控制:BEGIN.COMMIT和ROLLBACK.BEGIN开始一个事务,之后的所有操作都可以取消.COMMIT使BEGIN后的所有命令得到确认:而ROLLBACK还原BEGIN之后的所有操作.如: sqlite> BEG

sqlite的事务

好久没用数据库,知识都忘了,之前用sqlite 逐行insert数据,发现这性能实在是太坑,10w条数据,插入大约花了100来分钟. 后来发现还有事务这么一个东西,可以大幅度降低对io的操作,测试插入40w数据,大约花了5分钟左右,比之前的逐条插入可是666 WCHAR szBuffer[MAX_PATH] = { 0 }; WCHAR szBuffer2[1024] = { 0 }; for (int i = 0; i < 500000; i+=100) { wstring strSql; s

Sqlite之事务

原地址 :http://www.cnblogs.com/wangmars/p/3914090.html SQLite,是一款轻型的数据库,被广泛的运用到很多嵌入式的产品中,因为占用的资源非常少,二其中的操作方式几乎和我们接触的数据库不多,甚至只有几百K的他自然会被需求者青睐,下面讲一下在这样的轻型数据库中怎么对他进行一些读写操作. 之前做选择联系人的时候出现如果一个手机里联系人超过2000的话,往数据库里面插入会非常耗时,不同的手机存储的条数不同,这个存储的数量和手机的内存有很大的关系,往往取决

SQLite使用事务更新—by command

public void SaveToDB(DataTable dt) { /* todo:sqlite没有提供批量插入的机制,需要通过事务处理 更新所有数据 * http://www.cnblogs.com/hbjohnsan/p/4169612.html * Eorr 数据库加了锁,执行不了自己的代码. */ string connStr = @"data source=E:\YQSQLite\YQSQLite\Data\YQ.db"; using (SQLiteConnection

启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题

private void button1_Click(object sender, EventArgs e) { //Sqlite使用事务批量操作 极大的提高速度 DateTime starttime = DateTime.Now; using (SQLiteConnection con = new SQLiteConnection(connStr)) { con.Open(); DbTransaction trans = con.BeginTransaction();//开始事务 SQLite

Android入门(十二)SQLite事务、升级数据库

原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可以先使用delete()方法将Book表中的数据删除, 然后再使用insert()方法将新的数据添加到表中.我们要保证的是,删除旧数据和添加新数据的操作必须一起完成,否则就还要继续保留原来的旧数据.                 Button replaceData = (Button) find

SQLite中的事务操作

关于SQLite事务可以解决一些问题,比如你要插入两个数据,可以将两个数据作为同一个事务进行插入,这样如果第二个数据错误了,便自动执行回滚操作,第一个数据也不会插入成功,保证了数据的同步! 举一个实际的例子: 应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作.我的应用初始5000条记录也就是要5000次读写磁盘操作.而且不能保证所有数据都能同时插入.

Android 学习心得(3)——SQLite事务

应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作.我的应用初始5000条记录也就是要5000次读写磁盘操作. 而且不能保证所有数据都能同时插入.(有可能部分插入成功,另外一部分失败,后续还得删除.太麻烦) 解决方法: 添加事务处理,把5000条插入作为一个事务 我们使用SQLite的事务进行控制: 1 db.beginTransaction(); /

iOS-FMDB事务操作SQLite数据库

批量操作数据库的时候,我们经常会用到事务处理.事务是访问并可能更新数据库各种数据项的数据单元(unit),是恢复和并发的控制的基本单位. 事务具有四个属性. - 原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做. - 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态.一致性与原子性是密切相关的. - 隔离性(isolation):一个事务的执行不能被其他事务干扰.即一个事务内部的操作及使用的数据对并发的

SQLite 知识摘要 --- 事务

在许多时候,我们在使用大数据的时候会发现,尽管sqlite数据库的执行效率已经很快了,但是还是满足不了我们的需求,这时候我们会很容易考虑到使用并发的方式去访问sqlite数据库,但是sqlite数据独有的机制有会让我们在使用中遇到各种问题,如死锁,报错等等.下午就详细介绍一下sqlite的事务,了解sqlite事务对我们并发操作sqlite数据库具有极大的帮助. 本篇预备知识 我们先来了解下SQLite执行事务的基本流程,状态变化过程,再分析怎么使用才更优.SQLite定义的锁的状态有如下几种: