0

我使用了Android OrmLite 示例中的“ HelloTwoDbs ”示例来同时检查双数据库的使用情况。

假设我使用 OrmLite 设置了多个数据库,我可以同时在两个不同的数据库中写入而没有问题吗?对于每个数据库,它只有“一次写入一个线程”,但是两个写入线程(每个数据库一个)将同时执行。

我实际上在一个模拟器中使用下面的代码对此进行了测试并且没有任何问题,但是如果 OrmLite 真的支持它并且不会给我带来未来的问题,我仍然不安全。

顺便说一句,我倾向于使用两种不同的数据库方法,因为我想做一个小型社交交互应用程序,并且出于几个原因,我想将用户生成的内容从应用程序静态内容中分离出来,主要是因为用户生成的内容得到了同步和修改比应用程序静态内容更快的方法。此外,使用两个数据库,我实际上可以同时将两个内容同时从不同的来源更新到不同的数据库,或者我希望如此。

如果可能,请帮助我。=)


我根据站点示例进行的小测试,只是在 HelloTwoDbs.java 上调用“doOtherStuff”:

添加->

private void doOtherStuff() {

new Thread(new Runnable() {
    @Override
    public void run() {
        Log.e(LOG_TAG, "Started 1");

        final DatabaseHelper1 databaseHelperA = getHelper1();

        try {

            final Dao<SimpleData, Integer> simpleDao = databaseHelperA.getSimpleDataDao();

            for (int i = 0; i < 5000; i++) {
                Log.e(LOG_TAG, "Adding (1): " + i);
                simpleDao.create(new SimpleData(i));

            }
        } catch (SQLException e) {
        }
    }
}).start();

new Thread(new Runnable() {
    @Override
    public void run() {
        Log.e(LOG_TAG, "Started 2");

        final DatabaseHelper2 databaseHelperB = getHelper2();

        try {

            final Dao<ComplexData, Integer> complexDao = databaseHelperB.getComplexDataDao();

            for (int i = 0; i < 5000; i++) {
                Log.e(LOG_TAG, "Adding (2): " + i);
                complexDao.create(new ComplexData(i));

            }
        } catch (SQLException e) {
        }
    }
}).start();
}
4

1 回答 1

1

假设我使用 OrmLite 设置了多个数据库,我可以同时在两个不同的数据库中写入而没有问题吗?

我会这么认为,是的。实际上,您可以使用多个线程将其写入单个数据库。SQLite 执行数据库级锁定,因此第二个线程将等到第一个操作完成。

如果您对同一个数据库打开了多个连接,那么您唯一会遇到问题。如果是这种情况,您将获得数据损坏。

于 2013-12-18T21:00:06.437 回答