欢迎投稿

今日深度:

SQLite数据库远程操作模版,sqlite数据库模版

SQLite数据库远程操作模版,sqlite数据库模版


创建数据库:

package com.bwie.dongchangqi.tinkertest.SQLite;

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

/**
 * Created by Administrator on 2018/1/19 0019.
 */

public class MOpenHelper extends SQLiteOpenHelper{

    public MOpenHelper(Context context) {
        /**
         * name 数据库的名字
         * factory    工厂    默认的游标工厂 目的是创建 cursor
         * version 数据库的版本  从1开始
         *
         */
        super(context, "user", null, 1);
    }

    /**
     * 当数据库第一次创建的时候调用
     *
     * 特别适合做 表结构的初始化
     */
    @Override
    public void onCreate(SQLiteDatabase db) {


        db.execSQL("create table if not exists user (_id integer primary key autoincrement,name varchar(20),money varchar(20))");
        //初始化2条数据
        db.execSQL("insert into user ('name','money') values ('张三','2000')");
        db.execSQL("insert into user ('name','money') values ('李四','5000')");

    }

    /**
     * 当数据库版本需要升级的时候调用
     *
     * 适合做 表结构更新的操作
     *
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        System.out.println("onUpgrade");
//    db.execSQL("alter table info add phone varchar(20)");


    }

}

数据库操作类:

package com.bwie.dongchangqi.tinkertest.SQLite;

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

/**
 * Created by Administrator on 2018/1/19 0019.
 */

public class MContentProvider extends ContentProvider{

    private MOpenHelper mOpenHelper;

    @Override
    public boolean onCreate() {
        mOpenHelper = new MOpenHelper(getContext());
        //true:代表Provider创建成功,false:处理复杂逻辑的时候, 如果出错,我们就返回false;
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        Log.e("MContentProvider", "调用了查询数据的方法");
        SQLiteDatabase readableDatabase = mOpenHelper.getReadableDatabase();
        Cursor cursor = readableDatabase.query("user", projection, selection, selectionArgs, null, null, sortOrder);
        return cursor;
    }

    //内容提供者返回的数据类型,默认为null即可;只有返回特殊类型才会重写这个方法;默认为null即可;
    @Override
    public String getType(Uri uri) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        /**
         * getWritableDatabase:如果存储数据的sd卡已满,调用getWritableDatabase就会报错;
         * getReadableDatabase如果存储数据的sd卡已满,调用getReadableDatabase不会报错, 会以只读的方式来操作;;
         */
        SQLiteDatabase readableDatabase = mOpenHelper.getReadableDatabase();
        long insert = readableDatabase.insert("user", null, values);
        Log.e("MContentProvider", "调用了增加数据的方法");

        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        SQLiteDatabase readableDatabase = mOpenHelper.getReadableDatabase();
        int deleteTemp = readableDatabase.delete("user", selection, selectionArgs);
        return deleteTemp;

    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        SQLiteDatabase readableDatabase = mOpenHelper.getReadableDatabase();
        int updateTemp = readableDatabase.update("user", values, selection, selectionArgs);

        return updateTemp;
    }




}

如果数据库是远程的数据库:在Manifest中添加:添加到application中:

<!--
authorities:我被访问的固定地址 ,这个可以随便写,自己知道就行
exported:本程序是否可以被其他程序所访问
-->
<provider
    android:name=".SQLite.MContentProvider"
    android:authorities="com.example.sample"
    android:exported="true" />

对数据库执行操作:

package com.bwie.dongchangqi.tinkertest.SQLite;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import com.bwie.dongchangqi.tinkertest.R;

public class SQLiteTestMainActivity extends AppCompatActivity {

    private Uri uri;
    private ContentResolver contentResolver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite_test_main);

	//远程操作--->当前module操作远程数据库(另一个Module中设置的数据库)如下操作,不是远程操作直接调用上边的数据库操作类的方法;
        // contentResolver来访问;
        contentResolver = getContentResolver();
        // 访问provider用这个协议:content://
        // http://www.baidu.com
        uri = Uri.parse("content://com.example.sample");
    }
    public void insertdata(View v) {
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", "爱因斯坦");
        contentValues.put("money", "500");
        contentResolver.insert(uri, contentValues);
    }

    /**
     * 删除数据
     *
     * @param v
     */
    public void del(View v) {
        int deleteTemp = contentResolver.delete(uri, "name=?",
                new String[] { "李四光" });
        Log.e("MainActivity", "删除影响的条数" + deleteTemp);
    }

    /**
     * 更新数据
     * @param v
     */
    public void update(View v) {
        ContentValues contentValues = new ContentValues();
        // 这个要改变的值,就是最终数据库里改变后的值
        contentValues.put("name", "张国荣");
        int updateTemp = contentResolver.update(uri, contentValues, "name=?",
                new String[] { "爱因斯坦" });
        Log.e("MainActivity", "更新数据影响的条数" + updateTemp);

    }

    public void query(View v) {
        Cursor cursor = contentResolver.query(uri, null, null, null, null);

        while (cursor.moveToNext()) {
            int id = cursor.getInt(0);
            String name = cursor.getString(1);
            String money = cursor.getString(2);
            Log.e("MainActivity", "id: " + id + "name: " + name + "money: "
                    + money);
        }
    }
}


查看评论

www.htsjk.Com true http://www.htsjk.com/shujukunews/10200.html NewsArticle SQLite数据库远程操作模版,sqlite数据库模版 创建数据库: package com.bwie.dongchangqi.tinkertest.SQLite ; import android.content.Context ; import android.database.sqlite.SQLiteDatabase ; import android.database.sqlite.SQLi...
评论暂时关闭