package com.pandocloud.freeiot.ui.db; import java.util.HashMap; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.pandocloud.freeiot.ui.bean.Device; public class DBManager { private static DBManager dbManager; private DBHelper dbHelper; private SQLiteDatabase readDB; private SQLiteDatabase writeDB; private DBManager(Context context) { dbHelper = new DBHelper(context); readDB = dbHelper.getReadableDatabase(); writeDB = dbHelper.getWritableDatabase(); } public static DBManager getInstances(Context context) { if (dbManager == null) { dbManager = new DBManager(context.getApplicationContext()); } return dbManager; } public synchronized HashMap<String, Device> queryDeviceInfo() { HashMap<String, Device> resultHashMap = null; if (readDB == null) { readDB = dbHelper.getReadableDatabase(); } Cursor cursor = null; try { cursor = readDB.query(DBHelper.TABLE_DEVICE_INFO, new String[]{DBHelper.COLUMN_IDENTIFIER, DBHelper.COLUMN_DEVICE_NAME}, null, null, null, null, null); if (cursor != null) { resultHashMap = new HashMap<String, Device>(); while(cursor.moveToNext()) { String identifier = cursor.getString(0); String name = cursor.getString(1); Device device = new Device(); device.identifier = identifier; device.name = name; resultHashMap.put(identifier, device); } } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null && !cursor.isClosed()) { cursor.close(); cursor = null; } } return resultHashMap; } public synchronized void updateDevieInfo(String identifier, String name) { ContentValues values = new ContentValues(); values.put(DBHelper.COLUMN_IDENTIFIER, identifier); values.put(DBHelper.COLUMN_DEVICE_NAME, name); try { if (writeDB != null) { writeDB = dbHelper.getWritableDatabase(); } writeDB.update(DBHelper.TABLE_DEVICE_INFO, values, DBHelper.COLUMN_IDENTIFIER+"=?", new String[]{identifier}); } catch (Exception e) { e.printStackTrace(); } } public void insertDeviceInfo(final String identifier, final String name) { // new Thread(){ // @Override // public void run() { ContentValues values = new ContentValues(); values.put(DBHelper.COLUMN_IDENTIFIER, identifier); values.put(DBHelper.COLUMN_DEVICE_NAME, name); if (writeDB == null) { writeDB = dbHelper.getWritableDatabase(); } try { writeDB.insert(DBHelper.TABLE_DEVICE_INFO, null, values); } catch (Exception e) { e.printStackTrace(); } // } // }.start(); } }