package org.qii.weiciyuan.support.database; import org.qii.weiciyuan.support.database.table.TopicTable; import android.database.Cursor; import android.database.DatabaseUtils; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; /** * User: qii * Date: 13-7-4 */ public class TopicDBTask { private TopicDBTask() { } private static SQLiteDatabase getWsd() { DatabaseHelper databaseHelper = DatabaseHelper.getInstance(); return databaseHelper.getWritableDatabase(); } private static SQLiteDatabase getRsd() { DatabaseHelper databaseHelper = DatabaseHelper.getInstance(); return databaseHelper.getReadableDatabase(); } public static void clear(String accountId) { String sql = "delete from " + TopicTable.TABLE_NAME + " where " + TopicTable.ACCOUNTID + " in " + "(" + accountId + ")"; getWsd().execSQL(sql); } public static ArrayList<String> get(String accountId) { ArrayList<String> result = new ArrayList<String>(); String sql = "select * from " + TopicTable.TABLE_NAME + " where " + TopicTable.ACCOUNTID + " = " + accountId; Cursor c = getRsd().rawQuery(sql, null); while (c.moveToNext()) { String topic = c.getString(c.getColumnIndex(TopicTable.TOPIC_NAME)); result.add(topic); } c.close(); return result; } private static void add(String accountId, List<String> list) { if (list == null || list.size() == 0) { return; } DatabaseUtils.InsertHelper ih = new DatabaseUtils.InsertHelper(getWsd(), TopicTable.TABLE_NAME); final int accountidColumn = ih.getColumnIndex(TopicTable.ACCOUNTID); final int nameColumn = ih.getColumnIndex(TopicTable.TOPIC_NAME); try { getWsd().beginTransaction(); for (int i = 0; i < list.size(); i++) { String name = list.get(i); ih.prepareForInsert(); ih.bind(accountidColumn, accountId); ih.bind(nameColumn, name); ih.execute(); } getWsd().setTransactionSuccessful(); } catch (SQLException e) { } finally { getWsd().endTransaction(); ih.close(); } } public static void asyncReplace(final String accountId, final List<String> value) { new Thread(new Runnable() { @Override public void run() { clear(accountId); add(accountId, value); } }).start(); } }