android sqlite批量操作,Android SQLite批量插入

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.database.sqlite.SQLiteStatement;

import java.util.List;

import java.util.Set;

/**

* Created by wangqixu on 2017/5/26.

*/

public class SQLiteTools {

public static String TAG = "SQLiteTools";

/**

* 第二种方式批量插入(插入1W条数据耗时:1365ms)

*

* mysql 删除某行并删除与之关联的行 SQL语句

* https://bbs.csdn.net/topics/392217805?list=lz

* delete from 表 where id in

* (select id from

* (

* select * from 表 where parentid in (select ownid from 表 where 组织名称 = 3)

* union

* select * from 表 where 组织名称 = 3

* ) t)

*

* @param openHelper

* @param list

* @return

*/

public static boolean insertAllRosterEntryToDb(String account, SQLiteOpenHelper openHelper,

List list) {

//LogUtils.i(TAG, "28 list.size()="+list.size());

//LogUtils.i(TAG, "28 openHelper="+openHelper);

if (null == openHelper || null == list || list.size() <= 0) {

return true;

}

SQLiteDatabase db = null;

try {

db = openHelper.getWritableDatabase();

String sql = "insert into " + RosterProvider.TABLE_ROSTER + "("

+ RosterProvider.RosterConstants.ACCOUNT + ","// 当前账户

+ RosterProvider.RosterConstants.OTHER_JID + ","// 好友jid

+ RosterProvider.RosterConstants.ALIAS + ","// 好友备注

+ RosterProvider.RosterConstants.AVATAR_URL + ","// 好友备注

+ RosterProvider.RosterConstants.STATUS_MODE + ","// 好友状态

+ RosterProvider.RosterConstants.STATUS_MESSAGE + ","// 自己的心情

+ RosterProvider.RosterConstants.GROUP// 好友所在组

+ ") " + "values(?,?,?,?,?,?,?)";

//LogUtils.i(TAG, "44 +++++++");

SQLiteStatement stat = db.compileStatement(sql);

db.beginTransaction();

//LogUtils.i(TAG, "47 +++++++");

for (RosterInfo rosterInfo : list) {

//LogUtils.i(TAG, "45 rosterInfo="+rosterInfo);

stat.bindString(1, account);

stat.bindString(2, rosterInfo.getOtherJid());

stat.bindString(3, rosterInfo.alias);

stat.bindString(4, rosterInfo.avatarUrl);

stat.bindLong(5, rosterInfo.statusMode);

stat.bindString(6, rosterInfo.group);

long result = stat.executeInsert();

if (result < 0) {

return false;

}

}

db.setTransactionSuccessful();

} catch (Exception e) {

e.printStackTrace();

//LogUtils.i(TAG, "64 e="+e);

return false;

} finally {

try {

if (null != db) {

db.endTransaction();

db.close();

}

} catch (Exception e) {

//LogUtils.i(TAG, "73 e="+e);

e.printStackTrace();

}

}

return true;

}

public static boolean deleteAllRosterEntryFromDb(String account, SQLiteOpenHelper openHelper) {

//LogUtils.i(TAG, "82 openHelper="+openHelper);

if (null == openHelper) {

return false;

}

SQLiteDatabase db = null;

try {

db = openHelper.getWritableDatabase();

String sql = "delete from " + RosterProvider.TABLE_ROSTER

+ " where " + RosterProvider.RosterConstants.ACCOUNT

+ " = " + account;// 当前账户

/*

* String sql = "delete from " + RosterProvider.TABLE_ROSTER + " where id IN( select "+ RosterProvider.RosterConstants.OTHER_JID

+" from "+RosterProvider.TABLE_ROSTER +" where "

+ RosterProvider.RosterConstants.ACCOUNT + " = ?"// 当前账户

+ ") " + "values(?,?)";

* */

//LogUtils.i(TAG, "93 +++++++");

SQLiteStatement stat = db.compileStatement(sql);

db.beginTransaction();

//stat.bindString(1, account);

//LogUtils.i(TAG, "96 +++++++");

long result = stat.executeUpdateDelete();

if (result < 0) {

return false;

}

db.setTransactionSuccessful();

} catch (Exception e) {

e.printStackTrace();

//LogUtils.i(TAG, "109 e="+e);

return false;

} finally {

try {

if (null != db) {

db.endTransaction();

db.close();

}

} catch (Exception e) {

//LogUtils.i(TAG, "119 e="+e);

e.printStackTrace();

}

}

return true;

}

public static boolean deleteRosterEntryFromDb(String account, SQLiteOpenHelper openHelper,

List list) {

//LogUtils.i(TAG, "128 list.size()="+list.size());

//LogUtils.i(TAG, "128 openHelper="+openHelper);

if (null == openHelper || null == list || list.size() <= 0) {

return true;

}

SQLiteDatabase db = null;

try {

db = openHelper.getWritableDatabase();

String sql = "delete from " + RosterProvider.TABLE_ROSTER + " where " + RosterProvider.RosterConstants.ACCOUNT

+ " = ? AND " + RosterProvider.RosterConstants.OTHER_JID + " = ? ";// 当前账户

/*

* String sql = "delete from " + RosterProvider.TABLE_ROSTER + " where id IN( select "+ RosterProvider.RosterConstants.OTHER_JID

+" from "+RosterProvider.TABLE_ROSTER +" where "

+ RosterProvider.RosterConstants.ACCOUNT + " = ?"// 当前账户

+ ") " + "values(?,?)";

* */

//LogUtils.i(TAG, "146 +++++++");

SQLiteStatement stat = db.compileStatement(sql);

db.beginTransaction();

//LogUtils.i(TAG, "149 +++++++");

for (String rosterInfo : list) {

//LogUtils.i(TAG, "151 rosterInfo="+rosterInfo);

stat.bindString(1, account);

stat.bindString(2, rosterInfo);

long result = stat.executeUpdateDelete();

if (result < 0) {

return false;

}

}

db.setTransactionSuccessful();

} catch (Exception e) {

e.printStackTrace();

//LogUtils.i(TAG, "162 e="+e);

return false;

} finally {

try {

if (null != db) {

db.endTransaction();

db.close();

}

} catch (Exception e) {

//LogUtils.i(TAG, "171 e="+e);

e.printStackTrace();

}

}

return true;

}

public static boolean deleteAllChatFromDb(String account, SQLiteOpenHelper openHelper) {

//LogUtils.i(TAG, "179 openHelper="+openHelper);

if (null == openHelper) {

return false;

}

SQLiteDatabase db = null;

try {

db = openHelper.getWritableDatabase();

String sql = "delete from "

+ ChatProvider.TABLE_CHATS + " where " + ChatProvider.ChatConstants.ACCOUNT + " = " + account

+ " and " + ChatProvider.ChatConstants.CHAT_TYPE + " = " + ChatProvider.ChatConstants.CHAT;// 当前账户

//+" WHERE " + ChatProvider.ChatConstants.ACCOUNT + " not in ( select * from (select "+ ChatProvider.ChatConstants.ACCOUNT +" from "+ ChatProvider.TABLE_CHATS +" t_chats WHERE t_chats.account > 4)u) "

//+ " and NOT (" + ChatProvider.ChatConstants.OTHER_JID + " like " + XmppConfig.SystemAccount +"% )";

/*

* String sql = "delete from " + RosterProvider.TABLE_ROSTER + " where id IN( select "+ RosterProvider.RosterConstants.OTHER_JID

+" from "+RosterProvider.TABLE_ROSTER +" where "

+ RosterProvider.RosterConstants.ACCOUNT + " = ?"// 当前账户

+ ") " + "values(?,?)";

* */

//LogUtils.i(TAG, "196 +++++++");

SQLiteStatement stat = db.compileStatement(sql);

db.beginTransaction();

//LogUtils.i(TAG, "199 +++++++");

//stat.bindString(1, account);

long result = stat.executeUpdateDelete();

if (result < 0) {

return false;

}

db.setTransactionSuccessful();

} catch (Exception e) {

e.printStackTrace();

//LogUtils.i(TAG, "207 e="+e);

return false;

} finally {

try {

if (null != db) {

db.endTransaction();

db.close();

}

} catch (Exception e) {

//LogUtils.i(TAG, "216 e="+e);

e.printStackTrace();

}

}

return true;

}

public static boolean deleteChatFromDb(String account, SQLiteOpenHelper openHelper,

Set deleteChatSet) {

//LogUtils.i(TAG, "225 list.size()="+list.size());

//LogUtils.i(TAG, "226 openHelper="+openHelper);

if (null == openHelper || null == deleteChatSet || deleteChatSet.size() <= 0) {

return true;

}

SQLiteDatabase db = null;

try {

db = openHelper.getWritableDatabase();

String sql = "delete from " + ChatProvider.TABLE_CHATS + " where " + ChatProvider.ChatConstants.ACCOUNT

+ " = ? AND " + ChatProvider.ChatConstants.OTHER_JID + " = ? ";// 当前账户

/*

* String sql = "delete from " + RosterProvider.TABLE_ROSTER + " where id IN( select "+ RosterProvider.RosterConstants.OTHER_JID

+" from "+RosterProvider.TABLE_ROSTER +" where "

+ RosterProvider.RosterConstants.ACCOUNT + " = ?"// 当前账户

+ ") " + "values(?,?)";

* */

//LogUtils.i(TAG, "243 +++++++");

SQLiteStatement stat = db.compileStatement(sql);

db.beginTransaction();

//LogUtils.i(TAG, "246 +++++++");

for (String chatInfo : deleteChatSet) {

//LogUtils.i(TAG, "248 rosterInfo="+chatInfo);

stat.bindString(1, account);

stat.bindString(2, chatInfo);

long result = stat.executeUpdateDelete();

if (result < 0) {

return false;

}

}

db.setTransactionSuccessful();

} catch (Exception e) {

e.printStackTrace();

//LogUtils.i(TAG, "259 e="+e);

return false;

} finally {

try {

if (null != db) {

db.endTransaction();

db.close();

}

} catch (Exception e) {

//LogUtils.i(TAG, "268 e="+e);

e.printStackTrace();

}

}

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值