2013-07-09 34 views
0

在我的申請使用一個SQLite DBhelper類(延伸延伸SqliteOpenHelper),其覆蓋我的onCreate,OnUpgrade的方法。此外,我需要創建一個DBManager - 類以確保從其他類受控訪問我的數據庫....灌裝SQLite數據庫與數據一旦

現在我想爲我的數據庫設置數據。這些數據必須在我的應用第一次啓動時創建一次。我如何確保數據只從DBManager創建一次?我想打電話給我的設置DB-數據的方法從DBManager -class有乾淨的軟件設計....

這裏代碼例如,從DBManager

public class DBManager { 
    private static final String TAG = DBManager.class.getSimpleName(); 

    private DatabaseHelper helper; 
    private static Context myContext; 
    private static DBManager instance; 

    private DBManager() { 
     myContext = MyApplication.getAppContext(); 
     if (myContext == null) 
      throw new RuntimeException("MyApplication returned null-Context"); 
     helper = new DatabaseHelper(myContext); 

    } 

    public static void init() { 
     if (null == instance) { 
      instance = new DBManager(); 
     } 
    } 

    public static DBManager getInstance() { 
     if (instance == null) { 
      instance = new DBManager(); 
     } 
     return instance; 
    } 
    // Some Methods to add Data and Get Data form SQL-Database 

    // a Method, which creats my Objects for first App-Start; have to be called once 
} 
+0

創建進一步調用DBHelper類數據插入到源碼DBManager類的內部的功能。現在,當您的活動開始調用此DBManager類插入函數時。 – techroid

+0

這不是我的目標......在你的解釋中,數據庫充滿了每一個新的活動lifecirle!我只想在我的應用第一次啓動時設置我的數據! – JavaNullPointer

+0

在您的活動中創建一個布爾變量,並默認將其值設置爲true。那麼當你的活動首先開始檢查它的值時,如果它是真的,則調用DBManager類的插入方法,並將該布爾變量的值設置爲false。然後,每次您的活動開始時,它將檢查該布爾變量的值,每次都將爲false,並且您的活動不會調用插入函數。 – techroid

回答

1

把你insert語句(或功能叫你DBHelperonCreate方法指向您插入)。您的應用程序第一次運行時,該DBHelper將認識到,對於應用程序沒有數據庫,並且將運行onCreate(你應該創建表並插入種子數據)。之後,onCreate應該不會再次運行,除非數據庫被刪除。

+0

這也是我目前的解決方案;)但在我看來它是一個不潔的解決方案!因爲我想從其他類與我DBManager處理所有DB-東西......我尋找具有相同結果的解決方案,但我的數據必須從DBManager插入一次,因爲我的數據是從其它類,對象我堅持使用ormlite進入DB – JavaNullPointer