数据库知识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;
    }
时间: 2024-08-04 13:35:21

数据库知识SQLite的相关文章

MongDB篇,第一章:数据库知识1

MongDB    数据库知识1 程序 =  数据结构 + 算法 数据存储阶段 1,文件管理阶段 (.txt .doc .xls) 优点: 数据可以长期保存:可以存储大量的数据:使用简单     缺点: 数据的一致性差:数据的查找修改不方便:数据的冗余性大 2,数据库存储阶段 优点 : 数据组织结构化,降低了冗余:方便扩展:方便程序调用,做自动化的处理     缺点 : 数据库使用往往需要特定的语句或者命令进行操 作,相对比较复杂 几个概念 数据 :能够输入到计算机中并被识别处理的信息的集合:

数据库知识整理&lt;二&gt;

又继续写的博客,希望自己能坚持每天写博客.分享自己的点滴,对自己成长有帮助.今天下午高强度打了三个小时篮球,小腿都抽筋了.很爽,失落的心情似乎变得开明了一些.想到了一句话:“像SB式的坚持总会有好的收获”,因为坚定了目标,不达目标不罢休.其他的就没什么了.好吧,不多说这些了.继续数据库知识总结吧. 二,管理数据库和表: 2.1管理数据库: 创建和使用数据库: 创建数据库的SQL语句:create database 数据库名: 需要注意的是:数据库名在服务器中必须是唯一的并且遵循合法的标识符规则:

数据库知识整理

关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数据的安全性 1.2基本概念: 对于任何数据库来说,表之间的关联关系存在三种基本的关系类型:一对一,一对多,多对多仅此三种. 目前流行的关系型数据库服务器管理系统有:微软-MS SQL Server.甲骨文-Oracle.IBM-DB2.开源的MySql和PostgreSQL等.(在面试中有被问到过)

基础篇:6.Android数据库编程---SQLite

简介: 在Android平台上,继承了一个嵌入式关系型数据库---SQLite.SQLite具有跨平台特性,可以在所有主要的操作系统上运行.SQLite通过独占性和共享锁实现独立事务处理,因此多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据,在进行写操作之前,必须先获得独占锁.另一方面,SQLite采取动态数据类型,当某个值插入数据库时,SQLite会检查它的类型,如果该类型与所关联的列不匹配,SQLite则会进行强制转换.SQLite支持以下几种数据类型:NULL(空值).I

数据库知识整理&lt;八&gt;

联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a),(c,b)}. select 表1.列1,表1.列2,表2.列3 from 表1 cross join 表2: 这种类型的联接称为交叉联接,或者笛卡尔积.在mysql中查询语句就是这样写的. 8.1.1使用两表相等联接: 两个表的行相连接的最常用的方法是通过一个相等联接.相等联接基于每行中的一个列

数据库知识整理&lt;五&gt;

简单的数据查询: 5.1查询的基本结构: Sql语句:select [distinct] (* | column [alias],...) from table [where condition] [order bycolumn]; 5.2投影操作: 投影操作是指在Sql查询中,使用select子句,选择将对表中的那些列进行操作,这些列将出现在结果中. 基本的Sql语句的查询:select 列名列表 from 表名; 表名前缀:select 表名.列明 from 表名;如 select stud

iOS开发数据库篇—SQLite的应用

iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二.具体说明 新建一个项目,在项目的主界面中放四个按钮(分别是,增加.删除.修改.查询). 1.sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)函数的一些说明: (1)作用:把一个文件名称传递给他,它会自动检测这个文件是

数据库知识回顾

下载地址 http://www.newasp.net/soft/30867.html#downloads win7 64位 .sqlserver2008 安装 http://www.cnblogs.com/lyhabc/articles/3536047.html 打开 登陆 超级用户:sa 密码:123456 下面这张图是数据库分离用的. 5.数据库知识 xml数据库 查询效率高 完整性约束:对数据的约束. 用户定义完整性:男即男,女即女. 参照完整性:有所参照.关系与关系间的引用 实体完整性:

iOS开发数据库篇—SQLite常用的函数

iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb          // 数据库实例 ); 2.执行任何SQL语句 int sqlite3_exec( sqlite3*,                                  // 一个打开的数据库实例 const char *sql,