使用ContentProvider处理数据库操作是一种好习惯吗?

时间:2013-02-21 14:34:53

标签: android android-sqlite

首先让你知道我是Android新手。

  1. 使用ContentProvider仅为一个应用程序处理数据库表操作是一种好习惯吗?

  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);
        }
    }
    
  3. 创建了一个处理数据库表操作的类:

    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),但它要求将方法更改为静态。

1 个答案:

答案 0 :(得分:3)

  

使用ContentProvider仅为一个应用程序处理数据库表操作是一种好习惯吗?

如果您的数据仅适用于您的应用程序而其他应用程序无法使用它,我认为没有任何理由使用ContentProviders。 ContentProvider用作将应用程序的数据共享给其他应用程序的接口。如果您的数据可以共享或其他应用程序依赖于它,那么您必须使用ContentProvider。

您还可以为内容提供商创建一组权限,以限制提供商中的某些操作。