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. Python爬虫入门教程 50-100 Python3爬虫爬取VIP视频-Python爬虫6操作

    爬虫背景 原计划继续写一下关于手机APP的爬虫,结果发现夜神模拟器总是卡死,比较懒,不想找原因了,哈哈,所以接着写后面的博客了,从50篇开始要写几篇python爬虫的骚操作,也就是用Python3通过 ...

  2. ShareDialogDemo【分享对话框】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 整理项目中经常用到的分享对话框的实现. 这里只是一个分享对话框,不涉及分享功能的实现. 效果图 代码分析 ShareDialog.j ...

  3. TabLayoutViewPagerDemo【TabLayout+ViewPager可滑动】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout搭配ViewPager实现可滑动的顶部选项卡效果. 效果图 代码分析 1.演示常规的设置. 2.通过自定义Vi ...

  4. .NET Core 技巧汇总篇

    前言 本篇幅会专门记录在工作中实际碰到的问题场景,和一些比较好的实现方法作为汇总,可以供各位借鉴和参考,当然 本人入行不深,能力有限,仅供各位借鉴和参考.欢迎补充 技巧一:引入其他项目类库文件 做项目 ...

  5. .net core 使用IIS作为宿主Web服务器,部署常见问题

    ASP.NET Core 使用IIS作为Web服务器,部署在IIS上 所做的步骤部署完毕后,启动网站 出现 An error occurred while starting the applicati ...

  6. cocos creator主程入门教程(六)—— 消息分发

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 本篇开始介绍游戏业务架构相关的内容.在游戏业务层,所有需要隔离的系统和模块间通信都可以通过消息分发解耦. ...

  7. 数据结构——Java实现顺序表

    一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...

  8. windows系统 docker + swoole 操作

    之前文章讲过在windows系统安装 cgywin 从而安装swoole扩展的操作,但是安装cgywin的时候会出现这样那样的问题.所以今天记录下另一种方式使用docker 安装 swoole 环境! ...

  9. python 练习 后台返回当前时间

    新建一个 current_time.html 文件, !cur_time! 用来替换 <!DOCTYPE html> <html lang="en"> &l ...

  10. 在虚拟机中搭建qduoj(一)——准备工作

    为缩减篇幅,已略去ubuntu镜像下载.虚拟机(VirtualBox.VMware)安装等操作,若有疑问请搜索相关教程. 1.虚拟机系统安装 本教程使用Ubuntu16.04 server版本(des ...