Android 数据库使用demo

应用A
这里写图片描述

package com.example.testc;

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

public class DatabaseHelper extends SQLiteOpenHelper {

//创建 表格 名字data    表格里面 主键   uid  int   ,total  text , name text                                             
    private static final String CREATE_TABLE = "create table data(_id INTEGER PRIMARY KEY autoincrement,uid int,total text,name text);";

     private Context mContext;
    public DatabaseHelper (Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
          mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub创建数据库后,对数据库的操作 
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub 更改数据库版本的操作
           db.execSQL("drop table if exists peopleinfo");
            onCreate(db);
    }


}
package com.example.testc;



import java.util.ArrayList;

import android.net.Uri;
import android.os.Bundle;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

@TargetApi(23)
public class MainActivity extends Activity {

    private Context mcontext;
    private TextView IEMI;
    MapBroadcast mapReceiver;
    DatabaseHelper helper;
    SQLiteDatabase db;
    ArrayList< Appinfo> lists ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mcontext = getApplicationContext();
        initView();
        helper = new DatabaseHelper(MainActivity.this, "mydb.db", null, 1);  
        db = helper.getWritableDatabase();
         lists = new ArrayList<Appinfo>();
        /* 创建一个MySQLiteOpenHelper,该语句执行是不会创建或打开连接的 */  



    }

    private void initView() {
        // TODO Auto-generated method stub
        IEMI = (TextView) findViewById(R.id.hello);
        Button bt = (Button) findViewById(R.id.bt);
        Button bt1 = (Button)findViewById(R.id.bt1);
        Button bt2 = (Button)findViewById(R.id.bt3);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                db.execSQL("DELETE FROM data"); //插入前清空表格
                for (int i = 0; i < 10; i++) {
                     ContentValues values = new ContentValues();
                     values.put("uid", i);
                     values.put("total", "12MB");
                     values.put("name", "zhangsan");
                        // 插入数据
                      db.insert("data", null, values);
                }


            }
        });
        bt1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //清空表格数据
                testQuery();

            }
        });
        bt2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //查询数据
                 Cursor cursor = db.query("data", null, null, null, null, null, null);  
                 lists.clear();  
                    while (cursor.moveToNext()) {  
                        String uid = cursor.getString(cursor.getColumnIndex("uid"));  
                        String total = cursor.getString(cursor.getColumnIndex("total"));  
                        String name = cursor.getString(cursor.getColumnIndex("name"));  
                        Appinfo appinfo=new Appinfo(uid, total, name);  
                      /*  Log.e("TAG", "[uid]="+uid+"[total]="+total+"[name]="+name);
*/                      appinfo.setName(name);
                        appinfo.setTotal(total);
                        appinfo.setUid(uid);
                        lists.add(appinfo);
                    }  
                    cursor.close();

                    if(lists.size() > 0){
                        for (Appinfo listappinfo : lists) {

                        Log.e("data", "[info]="+listappinfo.toString());
                        }
                    }
            }

        });
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();

    }

}

数据库对外提供接口 内容提供者

package com.example.testc;

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

public class AppTotalContentProvider extends ContentProvider {
    private DatabaseHelper dbHelper;
    // 若不匹配采用UriMatcher.NO_MATCH(-1)返回
    private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);

    // 匹配码
    private static final int CODE_NOPARAM = 1;

     static
        {
            // 对等待匹配的URI进行匹配操作,必须符合cn.xyCompany.providers.personProvider/person格式
            // 匹配返回CODE_NOPARAM,不匹配返回-1
            MATCHER.addURI("com.example.testc", "data", CODE_NOPARAM);

        }

    @Override
    public boolean onCreate() {
        // TODO Auto-generated method stub
         dbHelper = new DatabaseHelper(this.getContext(), "mydb.db", null, 1);
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        // TODO Auto-generated method stub

         SQLiteDatabase db = dbHelper.getReadableDatabase();
          return db.query("data", projection, selection, selectionArgs, null, null, sortOrder);

    }

    @Override
    public String getType(Uri uri) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // TODO Auto-generated method stub

         SQLiteDatabase db = dbHelper.getWritableDatabase();  
                // 特别说一下第二个参数是当name字段为空时,将自动插入一个NULL。  
                long rowid = db.insert("data", "null", values);  
                Uri insertUri = ContentUris.withAppendedId(uri, rowid);// 得到代表新增记录的Uri  
                this.getContext().getContentResolver().notifyChange(uri, null);  
                return insertUri;  
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }

}
//插入数据到数据库
                 ContentResolver contentResolver = getContentResolver();  
                 Uri insertUri = Uri.parse("content://com.example.testc/data");  
                 ContentValues values = new ContentValues();  
                 values.put("name", "wangkuifeng");  
                 values.put("uid", "1111");
                 values.put("total", "123M");
                 Uri uri = contentResolver.insert(insertUri, values);  

在AndroidManifest.xml 添加

  <!-- 配置内容提供者,android:authorities为该内容提供者取名作为在本应用中的唯一标识 -->
        <provider
            android:name="com.example.testc.AppTotalContentProvider"
            android:authorities="com.example.testc"
            android:exported="true" />

测试: 应用B

package com.example.testb;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testQuery();
    }
    public void testQuery(){
        Uri uri = Uri.parse("content://com.example.testc/data");
        ContentResolver resolver = this.getContentResolver();
        Cursor cursor = resolver.query(uri, new String[]{"uid","name","total"}, null, null, null);
        while(cursor.moveToNext()){
               String uid=  cursor.getString(cursor.getColumnIndex("uid"));
               String name = cursor.getString(cursor.getColumnIndex("name"));
               String total =  cursor.getString(cursor.getColumnIndex("total"));
            Log.e("TAG", "[uid]="+uid+"[total]="+total +"[name]="+name);   
        }
        cursor.close();
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_38148680/article/details/80574841