安卓四大组件之一ContentProvider内容提供者

前提:这里我们需要准备好数据库,及数据的创建。可以使用Naviact,当然也可以用安卓代码。这里我们用安卓代码来实现。


1.创建一个项目,名为contentprovider .
在xml文件里写两个输入框,一个按钮,用来添加数据。如下图:


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后写一个Dbhelp类用来创建数据库。代码如下:

public class DBhelp extends SQLiteOpenHelper{                 ----继承一个SQLiteOpenHelper

  public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        Log.i("test","构造方法");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {        
       //创建表
//       Log.i("test","onCreate");
        db.execSQL("create table tbUser(_id integer primary key autoincrement,uname,uage)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      ---数据库版本升级后调用(修改数据库后调用)
        Log.i("test","onUpgrade");
    }
}
就这样DBHELP类写完了。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



接着我们就开始写MainActivity
public class MainActivity extends AppCompatActivity {

    private EditText et_main_uname;
    private EditText et_main_uage;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_main_uname = (EditText) findViewById(R.id.et_main_uname);
        et_main_uage = (EditText) findViewById(R.id.et_main_uage);

    }

    //操作按钮的方法
    public void operation(View view) {
        String uname = et_main_uname.getText().toString();
        String uage = et_main_uage.getText().toString();

        Dbhelp dbHelper = new Dbhelp(this, "G160828.db", null, 1);
        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
        for (int i = 1; i <= 100; i++) {
            sqLiteDatabase.execSQL("insert into tbUser(uname,uage) values('" + uname + i + "'," + uage + ")");
        }
        Toast.makeText(this, "操作成功", Toast.LENGTH_SHORT).show();
    }
}

让后我们就可以开始写提供者了
创建一个class文件
public class MyProvider extends ContentProvider {

    private SQLiteDatabase sqLiteDatabase;

    @Override
    public boolean onCreate() {
        DbHelper dbHelper=new DbHelper(getContext(),"G160828.db",null,1);
        sqLiteDatabase = dbHelper.getReadableDatabase();
        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        //查询数据
        Log.i("test","查询");
        return sqLiteDatabase.rawQuery("select * from tbUser",null);
    }
    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }
    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
        return null;
    }
    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }
    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------
然后到清单文件里配置一下:注意要到<activity>标签外边
   <!--配置 内容提供者-->
        <provider
            android:authorities="com.zking.administrator.g160828_android14_sqlite.User"
            android:exported="true"
            android:name=".MyProvider"></provider>

提供者就写完了!!!!
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

接下来我们写访问者,访问提供者里面的数据。
简单的在xml里写个按钮,就像这样:





然后mainActivity文件里就这样写:


之后运行一下,去控制台看有没有数据,如果有就代表成功了!
就像这样:


好了,到这里就全部讲完了!

猜你喜欢

转载自blog.csdn.net/abgglive/article/details/77941826