Android之SQLite数据库方式存储数据

一、简介

  1. SQLite数据库是一直嵌入式数据库,可存储结构型、关系型数据,使用SQL语句,支持事务处理,比较独立,无需服务进程。
  2. SQLite数据库的具体实现一般借助SQLite数据库辅助操作类SQLiteOpenHelper,是Android1.5版本后引入的。应用程序中所有的类都可以通过名称访问所属的所有SQLite数据库,但应用程序之外则不能访问。
  3. SQLite数据库一般存储在 "/data/data//databases"目录中。

二、自定义数据库操作类

package com.smarthome.facepass.database.face;

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

public class FaceSQLiteHelper extends SQLiteOpenHelper {


    private static final String DATABASE_NAME = "facesList.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "face_table";

    private static final String KEY_ID = "_id";
    private static final String KEY_FACE_ID = "faceId";
    private static final String KEY_FACE_TOKEN = "faceToken";

    private static final String CREATE_USER_TBL = "create table if not exists " + TABLE_NAME
            + "(" + KEY_ID + " INTEGER primary key autoincrement not null,"
            + KEY_FACE_ID + " nvarchar(30),"
            + KEY_FACE_TOKEN + " nvarchar(50))";

    private static FaceSQLiteHelper mFaceHelper;

    private FaceSQLiteHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    /**
     * 利用单例模式获取数据库帮助器的唯一实例
     * @param context   context
     * @return          实例
     */
    public static FaceSQLiteHelper getInstance(Context context) {
        if (mFaceHelper == null) {
            synchronized (FaceSQLiteHelper.class) {
                if (mFaceHelper == null) {
                    mFaceHelper = new FaceSQLiteHelper(context);
                }
            }
        }
        return mFaceHelper;
    }

    /**
     * 数据库第1次创建时 则会调用,即 第1次调用 getWritableDatabase() / getReadableDatabase()时调用
     * @param db    数据库
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_USER_TBL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public void insert(String faceId, String faceToken) {
        if (faceId == null || faceToken == null) {
            return;
        }
        ContentValues contentValues = new ContentValues();
        contentValues.put(KEY_FACE_ID, faceId);
        contentValues.put(KEY_FACE_TOKEN, faceToken);

        // 创建或打开可读可写数据库
        SQLiteDatabase database = getWritableDatabase();

        // 插入数据
        database.insert(TABLE_NAME, null, contentValues);

        // 关闭数据库
        database.close();
    }

    public void deleteByToken(String faceToken) {
        String where = KEY_FACE_TOKEN + " = ? ";
        String[] whereArgs = new String[]{faceToken};

        // 创建或打开可读可写数据库
        SQLiteDatabase database = getWritableDatabase();

        // 删除数据
        database.delete(TABLE_NAME, where, whereArgs);

        // 关闭数据库
        database.close();
    }

    public String queryToken(String faceId) {
        /* 创建或打开可读数据库 */
        SQLiteDatabase database = getReadableDatabase();
        if (database == null) {
            return null;
        }

        // 查询数据
        String[] columns = new String[]{KEY_ID, KEY_FACE_ID, KEY_FACE_TOKEN};
        String where = KEY_FACE_ID + " = ?";
        String[] selectArgs = new String[]{ faceId };
        Cursor cursor = database.query(TABLE_NAME, columns, where, selectArgs, null, null, null);
        if (cursor == null || cursor.getColumnCount() == 0) {
            database.close();
            return null;
        }
        String faceToken = null;
        if (cursor.moveToFirst()) {
            faceToken = cursor.getString(cursor.getColumnIndex(KEY_FACE_TOKEN));
        }
        cursor.close();

        // 关闭数据库
        database.close();
        return faceToken;
    }

    public void update(String faceId, String faceToken) {
        ContentValues contentValues = new ContentValues();
        contentValues.put(KEY_FACE_TOKEN, faceToken);

        String where = KEY_FACE_ID + " = " + faceId;

        SQLiteDatabase database = getWritableDatabase();
        database.update(TABLE_NAME, contentValues, where, null);
        database.close();
    }
}

三、实现

FaceSQLiteHelper.getInstance(context).insert("1", "aaa");
String token = FaceSQLiteHelper.getInstance(context).queryToken("1");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值