Android:week 11总结 内容提供者、数据库

目录

Monday

1.内容提供者

 

Tuesday

1.数据库

 


Monday

1.内容提供者

创建方式: (URL Authorities和文件夹路径名保持一致)

自动生成

 

Tuesday

1.数据库

1.新建SQL的java代码

DBaseHelper:

package com.example.myapplication;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBaseHelper extends SQLiteOpenHelper {
    public DBaseHelper(Context context){
        super(context, "provider.db", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db){
        //整数、主键、自动增加、类型
        db.execSQL("create table info(_id integer primary key autoincrement, name varchar(20))");
    }
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}
}

2.创建ContentProvider

MyContentProvider:

package com.example.myapplication;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;

public class MyContentProvider extends ContentProvider {
    private static UriMatcher uriMatcher = new UriMatcher(-1);//匹配失败的返回值-1
    private DBaseHelper helper;
    static {
        uriMatcher.addURI("com.example.mycontentprovider", "info", 1);
    }
    public MyContentProvider() {
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // Implement this to handle requests to delete one or more rows.
        if(uriMatcher.match(uri) == 1){
            SQLiteDatabase database = helper.getWritableDatabase();//打开数据库
            int cont = database.delete("info", selection, selectionArgs);//删除的数量
            database.close();
            return cont;
        }
        else
            throw new IllegalArgumentException("Uri is error.");
    }

    @Override
    public String getType(Uri uri) {
        // TODO: Implement this to handle requests for the MIME type of the data
        // at the given URI.
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // TODO: Implement this to handle requests to insert a new row.
        if(uriMatcher.match(uri) == 1){
            SQLiteDatabase database = helper.getWritableDatabase();
            //空为null 否则values
            database.insert("info", null, values);
            database.close();
            return uri;
        }
        else
            throw new IllegalArgumentException("Uri is error.");
    }

    @Override
    public boolean onCreate() {
        // TODO: Implement this to initialize your content provider on startup.
        helper = new  DBaseHelper(getContext());//实例化
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        // TODO: Implement this to handle query requests from clients.
        if(uriMatcher.match(uri) == 1){ //匹配
            SQLiteDatabase database = helper.getReadableDatabase();
            //执行对数据库的查询
            Cursor cursor = database.query("info", projection, selection, selectionArgs, null, null, sortOrder);
            database.close();
            return cursor;
        }
        else
            throw new UnsupportedOperationException("Uri is error.");
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        // TODO: Implement this to handle requests to update one or more rows.
        if(uriMatcher.match(uri) == 1){
            SQLiteDatabase database = helper.getWritableDatabase();
            int cont = database.update("info", values, selection, selectionArgs);
            database.close();
            return cont;
        }
        else
            throw new IllegalArgumentException("Uri is error.");
    }
}

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="provider test!"
        android:textSize="15sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="添加"
        app:layout_constraintTop_toBottomOf="@+id/tv"
        app:layout_constraintLeft_toLeftOf="@+id/tv"
        android:onClick="click"/>
    <Button
        android:id="@+id/delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="删除"
        app:layout_constraintTop_toBottomOf="@+id/add"
        app:layout_constraintLeft_toLeftOf="@+id/add"
        android:onClick="click"/>

    <Button
        android:id="@+id/query"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="查询"
        app:layout_constraintTop_toBottomOf="@+id/delete"
        app:layout_constraintLeft_toLeftOf="@+id/delete"
        android:onClick="click"/>
    <Button
        android:id="@+id/update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="更新"
        app:layout_constraintTop_toBottomOf="@+id/query"
        app:layout_constraintLeft_toLeftOf="@+id/query"
        android:onClick="click"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    private ContentResolver resolver;
    private Uri uri;
    private int count = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DBaseHelper helper = new DBaseHelper(this);
    }
    public void click(View view){
        uri = Uri.parse("content://com.example.myapplication/info");
        resolver = getContentResolver();

        switch (view.getId()){
            case R.id.add:
                ContentValues values = new ContentValues();
                values.put("name", "software"+count ++);
                resolver.insert(uri, values);
                Log.d("***", "insert");
                break;
            case R.id.delete:
                resolver.delete(uri,"name=?", new String[]{"software0"});
                Log.d("***", "delete");
                break;
            case R.id.query:
                break;
            case R.id.update:
                break;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值