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. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入

    除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的 ...

  2. .NetCore 使用Cookie

    1.首先我们在Startup下面的ConfigureServices中注册授权认证服务以及AddCookie services.AddAuthentication(CookieAuthenticati ...

  3. springboot~Compiler时开启插件的注解功能

    对于IJ这个IDE工具来说,我们会安装一些插件来帮助我们更好的进行开发,像lombok就是一款不错的插件,使用注解的方式在项目编译时帮助我们生成代码,像getter,setter,tostring等等 ...

  4. Synchronized锁性能优化偏向锁轻量级锁升级 多线程中篇(五)

    不止一次的提到过,synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,是JDK层面的 尽管最初synchronized的性能效率比较差,但是随着版本的升级,synchro ...

  5. 校园生活app结对开发第一天

    今天刚开始开发,要安装android studio及熟悉软件操作

  6. C#工具:分词辅助类

    using System; using System.Collections; using System.IO; using System.Text.RegularExpressions; names ...

  7. ASP.NET Core 基于JWT的认证(二)

    ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...

  8. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  9. winform注册功能

    注册按钮事件: private void btnRegister_Click(object sender, EventArgs e) { string username = txtUserName.T ...

  10. 二分查找BinarySearch(Java)

    二分查找(折半查找)BinarySearch 二分查找  一组排好顺序的数,查找其中的一个数(value)的位置,按照数组(int[] a)存放这组数据,数组的索引所指的位置就是需要查找的数,用三个变 ...