1.创建一个数据库,继承SQLiteOpenHelper
2.新建一个MyProvider继承ContentProvider,并重写方法
3.实现MyProvider里面的增删改查方法
4.在主activity里面调用数据库的增删改查方法
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) {
//更新数据库
}
}
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不匹配");
}
}
}
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;
}
}