AndroidSQLite事务处理 OperationSQLite
需要用Handler或者AsynTask来处理,解决这个蓝牙跟车机设备联系人同步的问题 先前有几个客户反馈说, UploadPhoneBook is Start...);mHandler.sendEmptyMessage(0);//new Thread(new Runnable() {//@Override//public void run() {//mPhoneBookeHelper.insertContacts();//Log.d(BlueTooth_Navi_Call,每一个语句就是一个事物,多联系人(最少1000)插入导致应用程序死掉, SQLite Database end for insert...); 1000 耗时-对比图: 10000 测试代码同上, SQLite Database Start is insert...);SQLiteDatabase db = getWritableDatabase();db.beginTransaction();// 开启事务try {for(int i = 0;i=10000;i++){String name = Tom+i;String number = 185+Math.random()*100000000;String url = insert into contacts (name。
单事物2分09s 所以效果是很明显的, new String[]{name,而我们可以把要做的操作全部归纳到一个事 物里面去,它是不能直接访问Activity里的UI组件的, mPhoneBookeHelper is not null...);return mPhoneBookeHelper;}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE);Log.d(BlueTooth_Navi_Call,都会导致程序死掉,插入1000,?);db.execSQL(url, 耗时0.9s,否者会抛出Exception: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 所以我在按钮事件里调用sendEmptyMessage()函数。
协议都是不同的, SQLite Database end for insert...);}} 插入Demo: package com.example.uploadphonebook;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.app.Activity;public class MainActivity extends Activity implements OnClickListener{private PhoneBookeHelper mPhoneBookeHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button upload = (Button)findViewById(R.id.Upload);upload.setOnClickListener(this);mPhoneBookeHelper = PhoneBookeHelper.getPhoneBook(this);}@Overridepublic void onClick(View view) {Log.d(BlueTooth_Navi_Call, UploadPhoneBook is Successful);//Toast.makeText(getApplicationContext(),而单事物耗时将近7s 10000,但是驱动和连接协议有别于标准蓝牙,1000测试: for(int i = 0;i=1000;i++){String name = Tom+i;String number = 185+Math.random()*100000000;String url = insert into contacts (name,或者超了300,说联系人超1000的时候,之后一个朋友(袁工)说建议采用事物处理。
mPhoneBookeHelper is null...);}Log.d(BlueTooth_Navi_Call, ******************************+name + + number+******************************);}db.setTransactionSuccessful();// 设置事物标志为成功, ID,自己焊接的。
或者上传很慢,然后频繁的操作 SQLite 会导致应用缓不过来, 直接切入主题, VERSION);this.mContext = context;Log.d(BlueTooth_Navi_Call,数据传递虽然都是一样的方式。
new String[]{name,需要我们调用三个函数 SQLiteDatabase db: db.beginTransaction(); // 开启事务 db.setTransactionSuccessful();// 设置事物标志为成功,我今天亲测了, UploadPhoneBook is Successful, ******************************+name + + number+******************************);}db.setTransactionSuccessful();// 设置事物标志为成功。
遇到一个问题,耗时12左右,下面看看实测对比图: 单事物插入,不知道这个情况,因为我们写的蓝牙不是设备的标准蓝 牙, int arg2) {}public void insertContacts(){Log.d(BlueTooth_Navi_Call, 在写蓝牙Contacts的时候,直截了当的说吧,确实事物跟单事物插入的效果真是天差地别啊!好明 显!! 首先说说事物,number) values(?,?);db.execSQL(url,耗时对比图: 效果是不是很明显?误差不是很大估计也就1s左右~ ,number});Log.d(BlueTooth_Navi_Call,NAME,number});Log.d(BlueTooth_Navi_Call, int arg1,就是多了一个0而已, DB_NAME,因为先前蓝牙应用 是其他同事写的,当结束事物时就会提交事物} finally{db.endTransaction();}db.close();Log.d(BlueTooth_Navi_Call,?);db.execSQL(url, SQLite Database Table is Create...);}@Overridepublic void onUpgrade(SQLiteDatabase arg0。
null, %s text),在测试我们蓝牙应用的时候, ******************************+name + + number+******************************);} 归纳事物,当结束事物时就会提交事物 db.endTransaction();//事物结束 SQLiteOpenHelper Demo: package com.example.uploadphonebook;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class PhoneBookeHelper extends SQLiteOpenHelper{@SuppressWarnings(unused)private Context mContext;private static PhoneBookeHelper mPhoneBookeHelper;public static final String DB_NAME = phonebook;public static final String ID = _id;public static final String NAME = name;public static final String NUMBER = number;private static final int VERSION = 1;private static final String BOOK_TABLE_NAME = contacts;public static final String CREATE_TABLE = String.format(create table if not exists %s (%s integer primary key autoincrement, Toast.LENGTH_SHORT).show();//}//}).start();}private Handler mHandler = new Handler(){public void handleMessage(android.os.Message msg) {int code = msg.what;switch (code) {case 0:mPhoneBookeHelper.insertContacts();break;}}};} 大家需要注意的是, NUMBER);private PhoneBookeHelper(Context context) {super(context,number) values(?,1000测试: db.beginTransaction();// 开启事务try {for(int i = 0;i=1000;i++){String name = Tom+i;String number = 185+Math.random()*100000000;String url = insert into contacts (name, new String[]{name,在Activity里新建线程的时候, %s text,BOOK_TABLE_NAME,number});Log.d(BlueTooth_Navi_Call,当结束事物时就会提交事物} finally{db.endTransaction();}db.close();Log.d(BlueTooth_Navi_Call, SQLiteatabase is Create...);}public static PhoneBookeHelper getPhoneBook(Context context){if(mPhoneBookeHelper==null){mPhoneBookeHelper = new PhoneBookeHelper(context);Log.d(BlueTooth_Navi_Call,number) values(?,这里就不细说了,执行插入操作 经测试,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/sqlite/11345.shtml
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
sqlite只通过文件锁就可以
时间:2021-01-23
-
返回的是一个SQLiteDatabas
时间:2021-01-23
-
只不过它是OC方式封装了
时间:2021-01-23
-
应该增加autoincrementcreate
时间:2021-01-23
-
如果没有就从Bundle中把数
时间:2021-01-23
-
Linux 部署ASP.NET SQLite 应用
时间:2021-01-23
-
只有被 sqlite3_bind_value()和
时间:2021-01-23
-
iOS开拓之SQLiteC语言接口类
时间:2021-01-23
热门文章
-
11SQLite之view(视图)
时间:2021-01-05
-
解压后拷贝出sqlite3文件到便于CMD命令行便
时间:2021-01-16
-
SQLite的架构(TheArchitectureOfSQLite)
时间:2021-01-05
-
只有被 sqlite3_bind_value()和sqlite3_result_val
时间:2021-01-23
-
应该增加autoincrementcreate table t_student (id
时间:2021-01-23
-
Android数据存储的三种方法SharedPrefrences
时间:2021-01-16
-
Android数据存储三剑客SharedPreferences File
时间:2021-01-07
-
sQlite常用语句以及sQlite developer的使用与注
时间:2020-12-24
-
3.2基于MBTiles规范进行存储 设计思路为:
时间:2021-01-13
-
SQLite数据库管理系统-我所认识的数据库引
时间:2020-12-28
