Android为了让我们能够更加方便的的管理数据,专门提供了一个SQLiteOpenHelper类,它是一个抽象类,如果我们想要使用它,就需要创建一个自己帮助类去继承它,而且它有两个抽象的方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后可以在其中去实现创建、升级数据库的逻辑。

SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库,并返回一个可对数据库进行操作的对象,不同的是,当数据不可写入时(如磁盘已满)、getReadableDatabase()方法返回的对象将以只读方式去打开数据库,而getWritableDatabase()方法则将出现异常

下面是我封装的继承SQLiteOpenHelper的类:

public class SQLiteDBHelper extends SQLiteOpenHelper {

    public SQLiteDBHelper(Context context, final String dbName, final int dbVersion){
super(context, dbName, null, dbVersion);
} //第一次创建数据库的时候,调用onCreate方法(只调用一次)
@Override
public void onCreate(SQLiteDatabase db) {
} //数据库版本号升级变更会调用onUpgrade函数(可用来创建新的数据库)
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } /**
* 添加,更新,删除数据
* @param database
* @param sql
*/
public void operateData(SQLiteDatabase database, final String sql){
if(sql != null){
try {
database.execSQL(sql);
}catch (SQLException e){
Log.e("OperateData", "operateData: " + e.toString());
}
} } /**
* 查询数据
* @param database
* @param sql
*/
public Cursor queryData(SQLiteDatabase database, final String sql){
Cursor cursor;
if (sql != null){
try {
cursor = database.rawQuery(sql, null);
return cursor;
}catch (SQLException e){
Log.e("QueryData", "queryData: "+ e.toString() );
}
}
return null;
}

下面是SQLiteDBHelper的执行接口

public class SqlExecute {
private final static String dbName = "user"; //数据库名称
private final static int db_version = 1; //版本号
private SQLiteDBHelper sqLiteDBHelper = null;
private SQLiteDatabase database = null;
private static SqlExecute sqlExecute = null; public static SqlExecute getInstance(){
if(sqlExecute == null){
sqlExecute = new SqlExecute();
}
return sqlExecute;
} /**
* 创建数据库
* @param context
*/
public void inIntDB(Context context){
sqLiteDBHelper = new SQLiteDBHelper(context, dbName, db_version);
try {
database = sqLiteDBHelper.getWritableDatabase();
}catch (Exception e){
Log.e("SQLiteDatabase", e.toString());
}
} /**
* 增、删、改、创建数据表
* @param sql
*/
public void operateData(String sql){ sqLiteDBHelper.operateData(database, sql);
} /**
* 查询数据
* @param sql
*/
public Cursor queryData(String sql){ return sqLiteDBHelper.queryData(database, sql);
}
}

数据的存储方式:SQLiteOpenHelper的用法的更多相关文章

  1. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  2. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

  3. Matlab中数据的存储方式

    简介 MATLAB提供了丰富的算法以及一个易于操作的语言,给算法研发工作者提供了很多便利.然而MATLAB在执行某些任务的时候,执行效率偏低,测试较大任务量时可能会引起较长时间的等待.未解决这个问题, ...

  4. Android的数据的存储方式

    数据的存储方式,总的来说分为三种: ① 文件存储: * SharedPreferences存储 * SD卡存储 ---- Environment * 数据库存储 ---- SQLite .MySQL. ...

  5. Android笔记——Android中数据的存储方式(三)

    Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...

  6. Android开发-之数据的存储方式一

    在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天 ...

  7. 笔试题引出float数据的存储方式的深究

    笔试题: #include <iostream>#include <stdio.h>#include <string.h>#include <conio.h& ...

  8. java中关于String 类型数据 的存储方式

    Constant Pool常量池的概念: 在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太 明白Constant Pool到底是个 ...

  9. Android中的5种数据存储方式

    本文转自  http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...

随机推荐

  1. sersync自动化同步部署

    目录 0. 前提: 1. 部署rsync server服务 1.1 配置rsync配置文件 1.2 rsync配置文件说明: 1.3 创建密码文件修改权限600 1.4 创建提示文件(可有可无) 1. ...

  2. 源码安装Nginx加TCP反向代理模块

    说明: 安装方式是源码编译安装,因此先安装相关依赖,否则报错. yum -y install gcc* patch openssl openssl-devel 安装步骤: 下载nginx源码包: wg ...

  3. ES 07 - Elasticsearch查询文档的六种方法

    目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...

  4. Node.js学习(第一章:Node.js安装和模块化理解)

    Node.js安装和简单使用 安装方法 简单的安装方式是直接官网下载,然后本地安装即可.官网地址:nodejs.org Windows系统下,选择和系统版本匹配的.msi后缀的安装文件.Mac OS ...

  5. nmon - 性能监控利器介绍

    关于nmon nmon 是一款小巧的系统监控程序(只有5000行代码),可以用来对CPU.磁盘.内存等资源指标来做实时监控. 之前在做系统性能优化工作时用得较多,觉得非常不错,于是在这里给大家介绍下用 ...

  6. RDIFramework.NET V3.3 Web框架主界面新增横向菜单功能

    功能描述 响应重多客户的要求与心声,RDIFramework.NET框架Web版本主界面新增横向菜单功能.横向菜单更加直观,用户可操作与展示的空间更多,符合实际应用要求. 一.效果展示 最终界面效果: ...

  7. Perl多线程(1):解释器线程的特性

    线程简介 线程(thread)是轻量级进程,和进程一样,都能独立.并行运行,也由父线程创建,并由父线程所拥有,线程也有线程ID作为线程的唯一标识符,也需要等待线程执行完毕后收集它们的退出状态(比如使用 ...

  8. ASP.NET应用程序服务器集群方案

    本文采用Nginx来实现ASP.NET程序集群化. 准备环境 首先准备Nginx环境,Windows版本下载链接:http://nginx.org/en/download.html 解压后文件格式如下 ...

  9. vue-render函数和插槽

    Vue render函数,官方文档定义绝大部分时候我们使用template 来创建html 模板,但是纯html 和css都基本上都不具有编程能力,而当我们想使用 javascript的编程能力时,我 ...

  10. arcgis api 4.x for js之图层管理篇

    上篇实现了基础地图加载以及二三维模式切换:本篇的内容则是图层管理控制,从两个不同角度来实现,分别是直接绑定arcgis api提供的图层管理widget(LayerList)以及自定义图层管理图标的点 ...