簡體   English   中英

SQLiteOpenHelper,多重表和ContentProvider

[英]SQLiteOpenHelper, Multiples Tables and ContentProvider

我正在嘗試在網絡服務器和android應用之間同步數據。因此,我遵循以下重要建議: 在Android應用和網絡服務器之間同步數據

現在,我實際上是在第一部分中做內容提供者。 為此,我找到了本教程: http : //www.vogella.com/articles/AndroidSQLite/article.html

並且在該教程中,他們建議您為每個表執行一個SQLiteOpenHelper。 這對我來說還可以,但是我意識到這有點奇怪,因為我每個表都有一個文件

像這樣:

public class AppUserDatabaseHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "appusertable.db";
private static final int DATABASE_VERSION = 1;

public AppUserDatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
    AppUserTable.onCreate(database);
}
}

因此,我開始做一些研究,發現了這一點: 數據庫中的每個表都應該有一個SQLiteOpenHelper嗎? 尤其是此鏈接: http : //blog.foxxtrot.net/2009/01/a-sqliteopenhelper-is-not-a-sqlitetablehelper.html ,這對我來說很有意義。

好吧,我的問題是,實際上每個表都有一個ContentProvider也是很有意義的,因為如果我不這樣做,它將非常龐大而且非常混亂,但是在每個ContentProvider中我實際上都是在創建數據庫的地方:

public class AppUserContentProvider extends ContentProvider {     
@Override
public boolean onCreate() {
    database = new AppUserDatabaseHelper(getContext());
    return false;
}
}

這也使我可以訪問數據庫。

所以我的問題是:我應該為所有表做一個巨型ContentProvider嗎? 還是有另一種創建應在每個ContentProvider之間共享的數據庫的方法?

希望您能幫到我

每個資源應具有不同的內容提供程序,但應使用一個sqlliteopenhelper(1個數據庫)。

有幾種方法可以做到這一點。 我所做的(可能不是最好的)是它在我的應用程序( http://developer.android.com/reference/android/app/Application.html )中使用了自定義Application對象,該對象具有用於訪問所需對象的方法成為一個需要上下文的單身人士。 這可能不是最好的方法,但對我有用。

例如

public class MainApplication extends Application {
    public static DatabaseHelper databaseHelper;
    public static Context applicationContext;


    @Override
    public void onCreate() {
        super.onCreate();
        databaseHelper = new DatabaseHelper(this);
        applicationContext = getApplicationContext();
    }

    @Override
    public void onTerminate() {
        databaseHelper.close();
        super.onTerminate();
    }

}

DatabaseHelper只是我的SQLiteOpenHelper的具體實現。

在您的Android清單文件中定義自定義應用程序對象。

<application android:name="com.example.MainApplication" ...>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM