首页 > 代码库 > 数据库知识SQLite

数据库知识SQLite

MySQLiteOpenHelper -> SQLiteDatabase

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class AppLockOpenHelper extends SQLiteOpenHelper {
//设置数据库的名称版本号
    public AppLockOpenHelper(Context context) {
        super(context, AppLockConstants.DB_NAME, null, AppLockConstants.DB_VERSION);
    }
//创建数据库表结构操作 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(AppLockConstants.CREATE_TABLE); }

public static final String CREATE_TABLE = "create table " + TABLE_NAME
       + "(" + ID + " integer primary key autoincrement," + PACKAGENAME
       + " varchar(100))";

     //当数据库版本发生变化的时候

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

    private AppLockOpenHelper openHelper;
    private Context mContext;

    public AppLockDao(Context context) {
        openHelper = new AppLockOpenHelper(context);
        this.mContext = context;
    }
public boolean add(String packageName) {
        SQLiteDatabase database = openHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        // 参数1:表中的字段的名称
        // 参数2 : 字段对应的值
        values.put(AppLockConstants.PACKAGENAME, packageName);
        // 参数1:表名
        // 参数2:设置添加数据的时候,可以添加null数据
        // 参数3:添加的数据
        long insert = database
                .insert(AppLockConstants.TABLE_NAME, null, values);

        // 通知内容观察者,数据库更新了
        ContentResolver contentResolver = mContext.getContentResolver();
        // 通知内容观察者数据发生变化了
        Uri uri = Uri.parse("content://com.z.mobliesafe.unlock");
        // 参数1:uri地址
        // 参数2:通知哪个内容观察者,如果是null,表示通知所有通过uri注册的内容观察者
        contentResolver.notifyChange(uri, null);

        // 判断是否添加成功
        return insert != -1;
    }
public boolean delete(String packageName) {
        SQLiteDatabase database = openHelper.getWritableDatabase();
        // 参数2:查询条件 where id=...
        // 参数3:查询条件的参数
        int delete = database.delete(AppLockConstants.TABLE_NAME,
                AppLockConstants.PACKAGENAME + "=?",
                new String[] { packageName });

        // 通知内容观察者,数据库更新了
        ContentResolver contentResolver = mContext.getContentResolver();
        // 通知内容观察者数据发生变化了
        Uri uri = Uri.parse("content://com.z.mobliesafe.unlock");
        // 参数1:uri地址
        // 参数2:通知哪个内容观察者,如果是null,表示通知所有通过uri注册的内容观察者
        contentResolver.notifyChange(uri, null);

        // 判断是否删除成功
        return delete != 0;
    }
// 查询单个数据
    /**
     * 查询应用程序的包名是否在数据库,判断应用程序是否加锁的应用程序 true:加锁,false:解锁(没有加锁) 2016-11-21
     * 下午3:09:23
     */
    public boolean queryOne(String packageName) {
        boolean isHave = false;
        SQLiteDatabase database = openHelper.getReadableDatabase();
        // 参数2:设置查询哪些数据
        // 参数3,4 :查询条件和查询条件的参数
        // 参数5:分组
        // 参数6:去重
        // 参数7 : 排序
        Cursor cursor = database.query(AppLockConstants.TABLE_NAME,
                new String[] { AppLockConstants.PACKAGENAME },
                AppLockConstants.PACKAGENAME + "=?",
                new String[] { packageName }, null, null, null);
        // 如果查询的数据只有一个,不用使用while直接使用if就可以
        if (cursor.moveToNext()) {
            // 因为只需要知道应用程序的包名是否在数据库中就可以了,不需要使用查询出来的数据
            isHave = true;
        }
        // 关闭数据库
        cursor.close();
        database.close();
        return isHave;
    }
// 查询单个数据
    /**
     * 查询应用程序的包名是否在数据库,判断应用程序是否加锁的应用程序 true:加锁,false:解锁(没有加锁) 2016-11-21
     * 下午3:09:23
     */
    public boolean queryOne(String packageName) {
        boolean isHave = false;
        SQLiteDatabase database = openHelper.getReadableDatabase();
        // 参数2:设置查询哪些数据
        // 参数3,4 :查询条件和查询条件的参数
        // 参数5:分组
        // 参数6:去重
        // 参数7 : 排序
        Cursor cursor = database.query(AppLockConstants.TABLE_NAME,
                new String[] { AppLockConstants.PACKAGENAME },
                AppLockConstants.PACKAGENAME + "=?",
                new String[] { packageName }, null, null, null);
        // 如果查询的数据只有一个,不用使用while直接使用if就可以
        if (cursor.moveToNext()) {
            // 因为只需要知道应用程序的包名是否在数据库中就可以了,不需要使用查询出来的数据
            isHave = true;
        }
        // 关闭数据库
        cursor.close();
        database.close();
        return isHave;
    }
// 查询全部数据
    /**
     * 查询全部加锁的应用程序
     * 
     * 2016-11-21 下午3:19:38
     */
    public List<String> queryAll() {

        SystemClock.sleep(2000);

        List<String> list = new ArrayList<String>();

        SQLiteDatabase database = openHelper.getReadableDatabase();
        // 参数2:设置查询哪些数据
        // 参数3,4 :查询条件和查询条件的参数
        // 参数5:分组
        // 参数6:去重
        // 参数7 : 排序
        Cursor cursor = database.query(AppLockConstants.TABLE_NAME,
                new String[] { AppLockConstants.PACKAGENAME }, null, null,
                null, null, null);
        while (cursor.moveToNext()) {
            String packageName = cursor.getString(0);

            // 为了方便listview显示数据,将bean类保存到集合中
            list.add(packageName);
        }
        // 关闭数据库
        cursor.close();
        database.close();
        return list;
    }

 

数据库知识SQLite