ContentProvider内容提供者

1.首先需要一个自己的数据库
2.写内容提供者继承自ContentProvider

package com.example.appa;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
//写一个数据库继承自SQLiteOpenHelper
public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
    	//创建数据库
    	//参数一 上下文 参数二 库名 参数三 工厂 填null就行 参数四 版本 要大于0
        super(context, "1705B", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    	//创建表 括号内的是表内要写的参数 先起名在写类型
        db.execSQL("create table student(image varchar(100),name varchar(20),message varchar(200))");
        //后面也可以直接填一些数据
        //比如 db.execSQL("insert into student values(null,'吴彦祖',null)")
       
    }
	//这个方法是修改数据时调用的 我们暂且不管
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

数据库写完后写内容提供者

//继承自ContentProvier
public class MyProvider extends ContentProvider {
    MyHelper myHelper;
    SQLiteDatabase db;
    @Override
    public boolean onCreate() {
    	//实例化我们刚才写的数据库
        myHelper = new MyHelper(getContext());
        //调用数据库中的getWritableDatabase方法
        db = myHelper.getWritableDatabase();
        //判断有没有这个数据库
        if(myHelper != null){
            return true;
        }else{
            return false;
        }

    }
    //数据查询时
    @Override
    public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) {
    	//参数一:表名 参数二:返回列 参数三:条件 参数四:条件的内容 参数五:排序方式 在参数四后面还有两个可有可无的参数 分组和分组条件可以填null
        Cursor query = db.query("student", projection, selection, selectionArgs, null, null, sortOrder);
	//最后返回查询结果
        return query;
    }
    //获取变量的类型
    @Override
    public String getType(Uri uri) {
        return null;
    }
    //添加数据
    @Override
    public Uri insert(Uri uri, ContentValues values) {
    //参数一:表名 参数二:填null 参数三:要添加的数据 写在一个values对象里
        long insert = db.insert("student", null, values);
        if(insert>0){
            return uri;
        }else{
            return null;
        }
    }
    //删除数据
    @Override
    public int delete(Uri uri,String selection,String[] selectionArgs) {
        //参数一:表名 参数二:条件 参数三:条件内容
        int delete = db.delete("student", selection, selectionArgs);
        return delete;
    }
    //修改数据
    @Override
    public int update(Uri uri,ContentValues values,String selection,String[] selectionArgs) {
        //参数一:表名 参数二:条件 参数三:修改的内容
        int update = db.update("student", values, selection, selectionArgs);
        return update;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值