您的位置:首页 > 编程语言 > PHP开发

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

2017-09-12 10:09 811 查看
前提:这里我们需要准备好数据库,及数据的创建。可以使用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文件里就这样写:



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



好了,到这里就全部讲完了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android