1. 程式人生 > 其它 >訪問其他程式中的資料

訪問其他程式中的資料

ContentResolver()中的增刪改查方法不接收表名引數,而使用的是一個Uri引數,這個引數被稱為內容URl。內容URl給內容提供器中的資料建立了唯一識別符號,它主要由兩部分組成:authority和path。authority是用於對不同的應用程式做區分,一般採用程式包名的方式進行命名,比如一個程式的包名為com.example.app,那麼該程式的authority就可以命名為com.example.app.provider。path是用於對同一程式中不同的表做區分的,通常新增到authority後面。比如某個程式的資料庫裡面存在兩張表,table1和table2,這時可以將path分別命名為/table1和/table2,然後將authority和path進行組合。除此以外,要辨別它是內容的URl,所以還要在字串的頭部加上協議宣告“content://”。綜上所述,內容URl最標準的寫法如下:

content://com.example.app.provider/table1


content://com.example.app.provider/table2

得到內容URl字串之後,我們需要將它解析成Uri物件才可以作為引數傳入,程式碼如下:
Uri uri = Uri.parse("content://com.example.app.provider/table1")

查詢

Cursor cursor = getContentResolver().query(
    uri,            //查詢某張表
    projection,     //指定查詢的列名
    selection,      //指定where的約束條件
    selectionArgs,  //為where中的佔位符提供具體的值
    sortOrder       //指定查詢結果的排序方式
)

查詢完成後返回的是一個Cursor物件,這時我們可以將資料從Cursor物件中逐個讀取出來。

if (cursor ! = null) {
  while(cursor.moveToNext(){
     String column1 = cursor.getString(cursor.getColumnIndex("column1"));
     String column2 = cursor.getString(cursor.getColumnIndex("column2"));
   }
   cursor.close();
}

增加

ContentValues contentValues = new ContentValues();
contentValues.put("column1", "text");
contentValues.put("column2", 1);
getContentResolver().insert(uri, contentValues);

修改

ContentValues contentValues = new ContentValues();
contentValues.put("column1", "");
getContentResolver().update(uri,contentValues,"column1=? and column2 =?",new String[]{"text","1"});

刪除
getContentResolver().delete(uri,"column2 = ?",new String[]{"1"});