如何使用ormlite获得动态数量的数据库

时间:2014-01-27 20:19:27

标签: android ormlite

我正在使用Ormlite将我的数据库用于我的Android应用程序。我现在已经被要求创建一个容器来容纳多个数据库。我不知道我需要多少个数据库,因为容器的数据库数量是动态的。我已经查看了ormlite的多个数据库代码,但是如果您知道手头有多少个数据库,那么每个数据库创建一个类。我没有这方面的信息。所以问题是,如何创建一个带有ormlite的DatabaseHelper类来处理多个不同的数据库并且仍然是线程安全的?所有数据库都拥有完全相同类型的数据,每个容器只有不同的数据。

DatabaseHelper代码:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    private static final int    DATABASE_VERSION = 1;
    private Dao<MyData, Integer> myDataDao;
    private static final AtomicInteger usageCounter = new AtomicInteger(0);
    private volatile static DatabaseHelper helper = null;
    public DatabaseHelper(Context context, String dynamicDBName)
    {
        super(context, dynamicDBName, null, DATABASE_VERSION);
    }
    public static DatabaseHelper getHelper(Context context, String dynamicDBName)
    {
        if (helper == null)
        {
            synchronized (DatabaseHelper.class)
            {
                // double check lock to prevent method from being synchronized
                // requiring sync lock only being used once
                if (helper == null)
                    helper = new DatabaseHelper(context, dynamicDBName);
            }

        }
        usageCounter.incrementAndGet();
        return helper;
    }

    @Override
    public void close()
    {
        if (usageCounter.decrementAndGet() == 0)
        {
            super.close();
            helper = null;
        }
    }
}

0 个答案:

没有答案