使用方法:
1.创建一个数据库,继承SQLiteOpenHelper
2.新建一个MyProvider继承ContentProvider,并重写方法
3.实现MyProvider里面的增删改查方法
4.在主activity里面调用数据库的增删改查方法
一.创建一个数据库,继承SQLiteOpenHelper
public class MyDatebaseopenHelper extends SQLiteOpenHelper{ /* * name :数据库名称 * factory :游标工厂 * version :版本号 * */ public MyDatebaseopenHelper(Context context) { super(context, "infoss", null, 1); } @Override public void onCreate(SQLiteDatabase db) { //创建数据库 String sql ="create table infoss(_id integer primary key autoincrement,name varchar(20),phone varchar(20));"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新数据库 } }
二:新建一个MyProvider继承ContentProvider,并重写方法
三.实现MyProvider里面的增删改查方法
public class contentProviders extends ContentProvider{ MyDatebaseopenHelper helper; private static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); private static final int INSERTSCUESS = 0; private static final int DELETESCUESS = 1; private static final int QUERYSCUESS = 2; private static final int UPDATESCUESS = 3; static{ matcher.addURI("COM,CCN","insert",INSERTSCUESS); matcher.addURI("COM,CCN","delete",DELETESCUESS); matcher.addURI("COM,CCN","quert",QUERYSCUESS); matcher.addURI("COM,CCN","update",UPDATESCUESS); } @Override public boolean onCreate() { //创建数据库 helper = new MyDatebaseopenHelper(getContext()); return true; } @Nullable @Override public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { SQLiteDatabase database = helper.getReadableDatabase(); Cursor cursor = database.query("infoss", projection, selection, selectionArgs, sortOrder, null, null); return cursor; } @Nullable @Override public String getType(@NonNull Uri uri) { return null; } @Nullable @Override public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) { if(matcher.match(uri) == INSERTSCUESS){ SQLiteDatabase database = helper.getWritableDatabase(); long insert = database.insert("infoss", null, values); Uri uri1 = Uri.parse("content://lalala"+insert); return uri1; }else{ throw new IllegalArgumentException("insert:uri不匹配"); } } @Override public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { if(matcher.match(uri) == DELETESCUESS){ SQLiteDatabase database = helper.getWritableDatabase(); int delete = database.delete("infoss", selection, selectionArgs); return delete; }else{ throw new IllegalArgumentException("delete:uri不匹配"); } } @Override public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) { if(matcher.match(uri) == DELETESCUESS){ SQLiteDatabase database = helper.getWritableDatabase(); int update = database.update("infoss", values, selection, selectionArgs); return update; }else{ throw new IllegalArgumentException("delete:uri不匹配"); } } }
四:在主activity里面调用数据库的增删改查方法
public class MainActivity extends AppCompatActivity implements View.OnClickListener { MyDatebaseopenHelper helper = new MyDatebaseopenHelper(MainActivity.this); private EditText user_name; private EditText user_phone; private Button insert; private Button delete; private Button update; private Button query; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { user_name = (EditText) findViewById(R.id.user_name); user_phone = (EditText) findViewById(R.id.user_phone); insert = (Button) findViewById(R.id.insert); delete = (Button) findViewById(R.id.delete); update = (Button) findViewById(R.id.update); query = (Button) findViewById(R.id.query); lv = (ListView) findViewById(R.id.lv); insert.setOnClickListener(this); delete.setOnClickListener(this); update.setOnClickListener(this); query.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.insert: SQLiteDatabase database = helper.getWritableDatabase(); ContentValues values = new ContentValues(); String name = user_name.getText().toString(); String phone = user_phone.getText().toString(); values.put("name",name); values.put("phone",phone); long insert = database.insert("infoss", null, values); if(insert>0){ Log.i("insert","插入成功!!"); }else{ Log.i("insert","插入失败!"); } break; case R.id.delete: String name1 = user_name.getText().toString(); SQLiteDatabase database1 = helper.getWritableDatabase(); int delete = database1.delete("infoss", "name=?", new String[]{name1}); if(delete>0){ Log.i("delete","删除成功!"); }else{ Log.i("delete","删除失败!"); } break; case R.id.update: SQLiteDatabase database2 = helper.getWritableDatabase(); ContentValues values1 = new ContentValues(); String name2 = user_name.getText().toString(); String phone2 = user_phone.getText().toString(); values1.put("name",name2); values1.put("phone",phone2); database2.update("infoss",values1,"name=?",new String[]{"张三"}); break; case R.id.query: SQLiteDatabase database3 = helper.getReadableDatabase(); Cursor cursor = database3.query("infoss", null, null, null, null, null, null); if(cursor!=null){ while(cursor.moveToNext()){ String name3 = cursor.getString(1); String phone3 = cursor.getString(2); Log.i("query",name3+" "+phone3); } }else{ Log.i("query","没有数据!"); } break; } }
}