2013-10-11 18 views
0

我在Android的OrmLite示例中使用了「HelloTwoDbs」示例來同時檢查雙數據庫的使用情況。同時編寫OrmLite多個數據庫

假設我有多個數據庫設置與OrmLite,我可以同時寫入兩個不同的數據庫並沒有問題?它的每個數據庫只有「一次寫入一個線程」,但寫入線程(每個數據庫一個線程)將同時執行。

我實際上在一個模擬器中用代碼波紋管測試了這個,並且沒有問題,但是如果它實際上真正受到OrmLite的支持並且不會導致我未來的問題,我仍然不安全。

順便說一句,我傾向於使用兩種不同的數據庫方法,因爲我想做一個小型的社交應用程序,我想從應用程序靜態內容中分離用戶生成的內容有幾個原因,主要是因爲用戶生成的內容獲得同步和修改的方式,以便應用靜態內容的速度更快。另外,有了兩個數據庫,我可以同時將兩個內容同時從不同的源更新到不同的數據庫,或者我希望如此。

請儘可能幫助我。 =)


小試我沒有基於網站例子,只是打電話 「doOtherStuff」 關於HelloTwoDbs.java:

添加 - >

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(); 
} 
+0

我也不知道爲什麼這個例子需要一個「usageCounter」變量並獲得幫助控制。 AFAIK,OrmLiteSqliteOpenHelper已經爲我們提供了這種行爲。 –

回答

1

假設我有多個使用OrmLite設置數據庫,我可以同時寫入兩個不同的數據庫,並且沒有問題嗎?

我會這麼認爲,是的。真的,你可以使用多個線程寫入單個數據庫。 SQLite執行數據庫級鎖定,所以第二個線程將等待,直到第一個操作完成。

唯一一次如果您有多個連接打開到數據庫相同的問題。如果是這種情況,你會得到數據損壞。

+0

非常感謝! –