Android--SQLite事务
来源:互联网 发布:梯度下降算法 matlab 编辑:程序博客网 时间:2024/06/04 19:41
这次我们来谈谈如何在 Android 中使用 SQLite 的事务,如果对 SQLite 事务不了解的朋友可以看看我的博客SQLite 高级语法介绍。
有了解 SQLite 事务的朋友都知道事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。
事务使用,可以提供一个机制,防止在执行过程中出错而之前正确的sql有影响了数据库的情况出现。所以这对我们对数据库做批量操作是很有用的,如果我们不设置事务,每一条 SQL 语句的执行都会默认开启一个事务,这影响了我们的效率。
使用事务并不是很复杂:
beginTransaction() //开启事务setTransactionSuccessful() //设置提交事务endTransaction() //关闭事务
我们需要 MySqliteHelper 和 Constant 这两个类,用来创建数据库。
MySQLiteHelper.java:
public class MySqliteHelper extends SQLiteOpenHelper { public MySqliteHelper(Context context) { super(context, Constant.DATABASE_NAME, null, Constant.DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { Log.i("TAG", "-------onCreate--------"); String sql = "create table " + Constant.TABLE_NAME + " (" + Constant._ID + " Integer primary key, " + Constant.NAME + " varchar(10)," + Constant.AGE + " Integer)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.i("TAG", "-------onUpGrade-------"); } @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); Log.i("TAG", "-------onOpen-------"); }}
Constant.java:
public class Constant { public static final String DATABASE_NAME = "info.db"; //数据库名称 public static final int DATABASE_VERSION = 1; //数据库版本 public static final String TABLE_NAME = "person"; //表名 public static final String _ID = "_id"; public static final String NAME = "name"; public static final String AGE = "age";}
对这两个类不理解的可以看我的博客Android上SQLite的基本应用(一)。
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.ht.sqlitetransation.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="批量插入" android:onClick="insertData"/></RelativeLayout>
这里就用一个 Button, 点击 Button 就批量添加数据。
MainActivity.java:
public class MainActivity extends AppCompatActivity { private MySqliteHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = new MySqliteHelper(this); } public void insertData(View view) { SQLiteDatabase db = helper.getWritableDatabase(); //1.数据库显示开启事务 db.beginTransaction(); for (int i = 1; i <= 100; i++) { StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("insert into "); sqlBuilder.append(Constant.TABLE_NAME); sqlBuilder.append(" values("); sqlBuilder.append(i); sqlBuilder.append(", '李四"); sqlBuilder.append(i); sqlBuilder.append("', 18)"); db.execSQL(sqlBuilder.toString()); } //2.提交当前事务 db.setTransactionSuccessful(); //3.关闭事务 db.endTransaction(); db.close(); }}
事务的使用是既简单又方便的,如果我们要批量操作,希望大家都能使用事务来做。
结束语:本文仅用来学习记录,参考查阅。
3 0
- android sqlite 事务
- android sqlite 事务
- Android 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事务理解与处理
- JavaScript -- 对象
- Minicom的使用
- 欢迎使用CSDN-markdown编辑器
- 一句话说明策略模式
- C++ 总结几种结构体初始化的方法
- Android--SQLite事务
- bzoj 1101: [POI2007]Zap 莫比乌斯反演
- yii2框架实现文件上传
- 设计模式-抽象工厂模式
- 225. Implement Stack using Queues
- 常用Linux和Oracle命令
- Mysql间隔取数据,实现sqlserver的row_number()函数
- 关于Angular2.0 in-memory-web-api的GET http://localhost:3000/traceur 404 (Not Found)等错误的解决方法之一
- 书单推荐:成为Java顶尖程序员 ,看这11本书就够了