1

まず、私がAndroidを初めて使用することをお知らせします。

  1. ContentProviderを使用して、1つのアプリケーションに対してのみデータベーステーブル操作を処理することをお勧めしますか?

  2. データベーステーブル操作を処理するために複数のクラスを作成しようとしています。次のようにデータベースヘルパーを作成しました。

    パブリッククラスWSDatabaseHelperはSQLiteOpenHelperを拡張します{

        private static final String DATABASE_NAME = "wsemp";
        private static final int DATABASE_VERSION = 5;
    
        public WSDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase database) {
            ItemTable.onCreate(database);
            CustomerTable.onCreate(database);
        }
    
        @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
            ItemTable.onUpgrade(database, oldVersion, newVersion);
            CustomerTable.onUpgrade(database, oldVersion, newVersion);
        }
    }
    

データベーステーブル操作を処理するクラスを作成しました。

public class CustomerBean {
    private WSDatabaseHelper database;

    @Override
    public boolean onCreate() {
        database = new WSDatabaseHelper(getContext());
        return false;
    }

public boolean insertObject(valObj) {
    SQLiteDatabase db = database.getWritableDatabase();
    db.insert(CustomerTable.TABLE_CUST_ACCOUNT_INDEX, null, values);
    }
}

しかし、アクティビティまたはセッションファイルからこのinsertObject関数を呼び出す方法がわかりません。CustomerBean.isnertObject(obj)で試しましたが、メソッドを静的に変更するように求められます。

4

1 に答える 1

3

ContentProviderを使用して、1つのアプリケーションに対してのみデータベーステーブル操作を処理することをお勧めしますか?

データが自分のアプリケーション専用であり、他のアプリケーションがそれを使用できない場合、ContentProvidersを使用する理由はわかりません。ContentProviderは、アプリケーションのデータを他のアプリケーションと共有するためのインターフェイスとして使用されます。データを共有できる場合、または他のアプリケーションがそれに依存している場合は、ContentProviderを使用する必要があります。

また、コンテンツプロバイダーへの一連のアクセス許可を作成して、プロバイダーでの一部の操作を制限することもできます。

于 2013-02-21T14:50:15.950 に答える