2011-06-22 113 views
1

我有一個類延伸SQLiteOpenHelper來管理我的數據庫的東西。我覺得很乏味要編寫這樣的代碼,使用我的數據庫(DBHelperSQLiteOpenHelper對象):SQLiteOpenHelper靜態方法最佳實踐

DBHelper dbHelper = new DBHelper(context); 
FeedResponse feedResponse = dbHelper.getFeedResponse(...); 
dbHelper.close(); 

這有什麼錯用靜態方法代替上面的代碼,並使用它像這樣?在實施像這樣的數據庫訪問時,我會遇到哪些麻煩?

FeedResponse feedResponse = DBHelper.getFeedResponse(context, ...);

public static FeedResponse getFeedResponse(Context context, ...) { 
    DBHelper dbHelper = new DBHelper(context); 
    FeedResponse feedResponse = dbHelper.getFeedResponse(...); 
    dbHelper.close(); 
    return feedResponse; 
} 

public FeedResponse getFeedResponse(...) { 
    //returns data from database 
} 

這樣做確實減少了總是創建(打字)的DBHelper一個新實例,並關閉它沒有大驚小怪。這一切都在幕後進行。

回答

0

您的解決方案應該可以正常工作,但不是最優的,因爲您將爲每個數據庫查詢創建一個新的DBHelper對象。而創建一個對象是一個昂貴的操作。如果你重用DBHelper對象會更好。

0

此外,您可能會遇到麻煩,從多個線程使用您的DBHelper