package testdemo.syh.com.db;
public class DBProvider extends ContentProvider {
private final static String authorities="a.b.c";
private final static String CONTENT_URI="";
public static final String AUTHORITY = "a.b.c";
// BaseColumn类中已经包含了 _id字段
public static final class User implements BaseColumns {
public static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+ "/"+TABLE_NAME);
// 表数据列
public static final String USER_NAME = "name";
//该ContentProvider所返回的数据类型的定义
public static final String CONTENT_TYPE = "a";//"vnd.android.cursor.dir/vnd.firstprovider.user";
public static final String CONTENT_TYPE_ITEM = "b";//"vnd.android.cursor.item/vnd.firstprovider.user";
}
private SQLiteDatabase sqlDB;
private DatabaseHelper dbHelper;
private static final String DATABASE_NAME = "Users.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "User";
// private static final String TAG = "MyContentProvider";
public static final UriMatcher uriMatcher;
public static final int INCOMING_USER_COLLECTION = 1;
public static final int INCOMING_USER_SINGLE = 2;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHORITY, "/"+TABLE_NAME ,
INCOMING_USER_COLLECTION);
//#代表id
uriMatcher.addURI(AUTHORITY, "/"+TABLE_NAME +"/#",
INCOMING_USER_SINGLE);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建用于存储数据的表
db.execSQL("Create table " + TABLE_NAME + "( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
@Override
public int delete(Uri uri, String s, String[] as) {
return 0;
}
@Override
public String getType(Uri uri) {
// switch(uriMatcher.match(uri)){
// case INCOMING_USER_COLLECTION:
// return User.CONTENT_TYPE;
// case INCOMING_USER_SINGLE:
// return User.CONTENT_TYPE_ITEM;
// default:
// throw new IllegalArgumentException("Unknown URI" + uri);
// }
return null;
}
@Override
public Uri insert(Uri uri, ContentValues contentvalues) {
sqlDB = dbHelper.getWritableDatabase();
sqlDB.insert(TABLE_NAME, null, contentvalues);
return null;
}
@Override
public boolean onCreate() {
dbHelper = new DatabaseHelper(getContext());
return (dbHelper == null) ? false : true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor c = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
return c;
}
@Override
public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {
return 0;
}
}
mainifest.xml中设置
<provider android:name="testdemo.syh.com.db.DBProvider"
android:authorities="a.b.c"></provider>
另一程序中调用数据,既可插入数据也可查询:
Uri uu= Uri.parse("content://"+"a.b.c"+ "/"+"User");
ContentResolver cr=getApplicationContext().getContentResolver();
ContentValues cv=new ContentValues();
cv.put("_id", (int)(1000*Math.random()));
cv.put("name", "game"+Math.random()*100);
cr.insert(uu, cv);
Cursor c=cr.query(uu, null, null, null, null);
if(c!=null){
Log.e("demo","Cursor counnt:"+c.getCount());
}else{
Log.e("demo","Cursor is null");
}
c.close();
其他地方无需设置
(2012-03-08 写于百度空间)
