///======= lớp MyDbHelper
public class MyDbHelper extends SQLiteOpenHelper {
static String DB_NAME ="db_banhang";
static int VERSION = 1;
public MyDbHelper(@Nullable Context context) {
super(context, DB_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql = "CREATE TABLE tb_sanpham( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
" name TEXT NOT NULL UNIQUE ); ";
sqLiteDatabase.execSQL(sql);
// chèn dữ liệu DEMO
String sql_insert = "INSERT INTO tb_sanpham (name) VALUES('Điện thoại'), " +
" ('Máy tính'),('Tivi'), ('Tủ lạnh') ";
sqLiteDatabase.execSQL(sql_insert);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
//================== file DAO SanPhamDAO
public class SanPhamDAO {
MyDbHelper dbHelper;
SQLiteDatabase db;
public SanPhamDAO(Context context){
dbHelper = new MyDbHelper(context);
db = dbHelper.getWritableDatabase();
}
// xây dựng hàm trả dữ liệu về cho provider
public Cursor providerSelectAll(String[] columns,String selection, String[] selectionArgs,String orderBy ){
Cursor c = db.query("tb_sanpham", columns, selection, selectionArgs, null, null,orderBy );
return c;
}
// public Cursor query(String table, String[] columns,
// String selection, String[] selectionArgs,
// String groupBy, String having, String orderBy) {
// throw new RuntimeException("Stub!");
// }
}
///================= lớp SanPhamProvider
public class SanPhamProvider extends ContentProvider {
public static String AUTHOR = "vn.edu.spx.demoprovidersanpham_src.sanphamProvider";
public static String TB_SANPHAM = "tb_sanpham";
// URI: content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham
UriMatcher uriMatcher;// quản lý danh sách uri và xác định người dùng vào uri nào
SanPhamDAO sanPhamDAO;
Cursor cursor;
@Override
public boolean onCreate() {
// khởi tạo các giá trị
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHOR,TB_SANPHAM, 1); //content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham
uriMatcher.addURI(AUTHOR, TB_SANPHAM + "/#", 2); //content://vn.edu.spx.demoprovidersanpham_src.Provider/tb_sanpham/3
// khởi tạo DAO
sanPhamDAO = new SanPhamDAO( getContext() );
return false;
}
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] strings,
@Nullable String s, @Nullable String[] strings1,
@Nullable String s1) {
int code_uri_matcher = uriMatcher.match( uri );
Log.d("zzzzz", "query: code uri = " + code_uri_matcher);
switch (code_uri_matcher){
case 1: // gọi DAO lấy tất cả dữ liệu trong bảng
cursor = sanPhamDAO.providerSelectAll(strings,s, strings1, s1);
break;
case 2:
//xử lý lấy 1 bản ghi trả về
String strWhere = "id = " + uri.getPathSegments().get(1);
cursor = sanPhamDAO.providerSelectAll(strings,strWhere, strings1, s1);
break;
}
return cursor;
}
@Nullable
@Override
public String getType(@NonNull Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
return null;
}
@Override
public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
return 0;
}
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
return 0;
}
}
//========== đăng ký manifest
<provider
android:authorities="vn.edu.spx.demoprovidersanpham_src.sanphamProvider"
android:name=".Provider.SanPhamProvider"
android:exported="true"
/>
///============= Bên ứng dụng Client thực hiện thao tác sau để lấy dữ liệu và hiển thị lên log
Uri uri0001 = Uri.parse("content://vn.edu.spx.demoprovidersanpham_src.sanphamProvider/tb_sanpham");
Cursor cursor = getContentResolver().query(uri0001,null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()){
Log.d("zzzz", "dòng dữ liệu id = " + cursor.getInt(0) + ", name = " + cursor.getString(1));
cursor.moveToNext();
}