数据的存储方式:SQLiteOpenHelper的用法
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的用法的更多相关文章
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android笔记——Android中数据的存储方式(一)
Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...
- Matlab中数据的存储方式
简介 MATLAB提供了丰富的算法以及一个易于操作的语言,给算法研发工作者提供了很多便利.然而MATLAB在执行某些任务的时候,执行效率偏低,测试较大任务量时可能会引起较长时间的等待.未解决这个问题, ...
- Android的数据的存储方式
数据的存储方式,总的来说分为三种: ① 文件存储: * SharedPreferences存储 * SD卡存储 ---- Environment * 数据库存储 ---- SQLite .MySQL. ...
- Android笔记——Android中数据的存储方式(三)
Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...
- Android开发-之数据的存储方式一
在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天 ...
- 笔试题引出float数据的存储方式的深究
笔试题: #include <iostream>#include <stdio.h>#include <string.h>#include <conio.h& ...
- java中关于String 类型数据 的存储方式
Constant Pool常量池的概念: 在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太 明白Constant Pool到底是个 ...
- Android中的5种数据存储方式
本文转自 http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...
随机推荐
- WebApiClient的接口输入验证
1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,本文将介绍WebApiClient的接口参数输入有效性验证的新特性. ...
- ES6躬行记(21)——类的继承
ES6的继承依然是基于原型的继承,但语法更为简洁清晰.通过一个extends关键字,就能描述两个类之间的继承关系(如下代码所示),在此关键字之前的Man是子类(即派生类),而在其之后的People是父 ...
- MariaDB Galera集群部署--技术流ken
Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...
- Flutter map 妙用及 .. 使用
前言 本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的. 背景 说到 map 妙用的发现,还要归功于 Tooltip 的研 ...
- 结对开发nabcd
各位领导/投资人/用户/合作伙伴: 我们的产品校园生活 是为了解决 广大在校师生对于信息难以得到的痛苦,他们需要了解有关于学校开办的各种活动的信息还有各种二手商品的交换信息,他们也需要一个公开的平台 ...
- .net core中使用autofac进行IOC
.net Core中自带DI是非常简单轻量化的,但是如果批量注册就得扩展,下面使用反射进行批量注册的 public void AddAssembly(IServiceCollection servic ...
- OO第一单元作业小结
前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰 ...
- tablednd onDrap 方法不调用
场景 使用 tablednd 插件时,onDrap 方法不调用 解决 给tr标签加 id 属性
- vue鼠标悬停事件
v-bind:title="message" <!DOCTYPE html> <html lang="en"> <head> ...
- dedecms织梦上下页标签和CSS
模板中的分页部分源码: <div class="pagination-wrapper" style= "font-size:20pt;color:red;text- ...