package com.jiuqi.njt.db; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.util.Log; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; import com.jiuqi.njt.data.AdminAreaBeanLocal; import com.jiuqi.njt.data.DataDictionaryBeanLocal; import com.jiuqi.njt.data.KindsOfCarBeanLocal; import com.jiuqi.njt.data.WorkTaskBeanLocal; public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String TABLE_NAME = "njtfb.db"; private static final int VERSION = 3; private Map<String, Dao> daos = new HashMap<String, Dao>(); private DatabaseHelper(Context context) { super(context, TABLE_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource arg1) { try { TableUtils.createTableIfNotExists(arg1, WorkTaskBeanLocal.class); TableUtils.createTableIfNotExists(arg1, AdminAreaBeanLocal.class); TableUtils.createTableIfNotExists(arg1, DataDictionaryBeanLocal.class); TableUtils.createTableIfNotExists(arg1, KindsOfCarBeanLocal.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1, int oldVersion, int newVersion) { try { TableUtils.dropTable(arg1, WorkTaskBeanLocal.class, true); TableUtils.createTable(arg1, WorkTaskBeanLocal.class); TableUtils.dropTable(arg1, AdminAreaBeanLocal.class, true); TableUtils.createTable(arg1, AdminAreaBeanLocal.class); TableUtils.dropTable(arg1, DataDictionaryBeanLocal.class, true); TableUtils.createTable(arg1, DataDictionaryBeanLocal.class); TableUtils.dropTable(arg1, KindsOfCarBeanLocal.class, true); TableUtils.createTable(arg1, KindsOfCarBeanLocal.class); } catch (SQLException e) { e.printStackTrace(); } } private static DatabaseHelper instance; /** * 单例获取该Helper * * @param context * @return */ public static synchronized DatabaseHelper getHelper(Context context) { context = context.getApplicationContext(); if (instance == null) { synchronized (DatabaseHelper.class) { if (instance == null) instance = new DatabaseHelper(context); } } return instance; } public synchronized Dao getDao(Class clazz) throws SQLException { Dao dao = null; String className = clazz.getSimpleName(); if (daos.containsKey(className)) { dao = daos.get(className); } if (dao == null) { dao = super.getDao(clazz); daos.put(className, dao); } return dao; } /** * 释放资源 */ @Override public void close() { super.close(); for (String key : daos.keySet()) { Dao dao = daos.get(key); dao = null; } } }