SQLiteOpenHelper类是Android平台提供的用于SQLite数据库的创建、打开以及版本管理的帮助类。一般需要继承并这个类并实现它的onCreate和onUpgrade方法,在构造方法中调用SQLiteOpenHelper类的构造方法。

在实际应用中一般是先创建一个继承自SQLiteOpenHelper类的辅助类的实例,在调用该实例的getWritableDatabase()或getReadableDatabase()方法获取SQLiteDataBase对象。

SQLiteOpenHelper类的构造方法:

SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)

context 上下文环境

name  要创建或打开的数据库名称

factory  用于数据查询的时候实例化一个游标,一般为null

version  数据库版本号,不能小于1

onCreate(SQLiteDatabase db)方法:当首次创建数据库时调用该方法,一般进行创建表等初始化操作;

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法:当传入的数据库版本号大于当前的数据库版本是会调用该方法,可以在这个方法里进行数据库的更改升级;

另外还可以选择实现onDowngrade方法和onOpen方法:

当传入的数据库版本号小于数据库当前的版本号时,会调用onDowngrade方法;

onOpen方法在onCreate、onUpgrade、onDowngrade之后被调用。

SQLiteOpenHelper的getWritableDatabase()和getReadableDatabase()方法:

一般情况下getReadableDatabase()与getWritableDatabase()返回的都是可读写的数据库对象,只有在数据库仅开放只读权限或磁盘已满时getReadableDatabase()方法才会返回一个只读的数据库对象。

实际上在SQLiteOpenHelper类的构造方法中并未进行数据库的打开或创建,而是在getWritableDatabase()和getReadableDatabase()中打开或创建数据库。

示例代码:

SqliteHelper类:

public class SqliteHelper extends SQLiteOpenHelper {

public SqliteHelper(Context context,String dbname,int version) {

super(context, dbname, null, version);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

String sql_user="create table if not exists user("

+"username text primary key,"

+"userpwd text)";

db.execSQL(sql_user);// 创建一个用户表

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

}

public void deleteTable(SQLiteDatabase db, String name) {

String sql_delteTable = "DROP TABLE if exists " + name;

db.execSQL(sql_delteTable);

}

}

DBManager 类:(进行数据查询和增删改)

public class DBManager {

private SqliteHelper helper = null;

private SQLiteDatabase db = null;

/**

* 构造函数

*

* @param context

*/

public DBManager(Context context) {

helper = new SqliteHelper(context,"test.db",1);

db = helper.getWritableDatabase();

}

/**

* 关闭数据库

*/

public void Close() {

if (db != null) {

helper.close();

}

}

/**

* 添加用户

*

* @return the row ID of the newly inserted row, or -1 if an error occurred

*/

public long AddUser() {

ContentValues values = new ContentValues();

values.put("username", "kitty");

values.put("userpwd", "123456");

return db.insertOrThrow("user", null, values);

}

/**

* 验证账户是否存在

*

* @param username

* @return boolean

*/

public boolean CheckUsername(String username) {

String sql = "select username from user where username=?";

Cursor cursor = db.rawQuery(sql, new String[] { username });

return (cursor.getCount() > 0);

}

/**

* 验证登录信息

*

* @param username

*            账户

* @param password

*            密码

* @return 0-验证通过 1-账户不存在 2-密码错误

*/

public int VerifyLogin(String username, String password) {

String sql = "select * from user where username=? and userpwd=?";

Cursor cursor = db.rawQuery(sql, new String[] { username, password });

if (cursor.getCount() > 0) {

return 0;

} else {

if (!CheckUsername(username)) {

return 1;

} else {

return 2;

}

}

}

}

Android SQLiteOpenHelper类的使用的更多相关文章

  1. Android笔记——SQLiteOpenHelper类

    public 抽象类 SQLiteOpenHelper 继承关系 Java.lang.Object android.database.sqlite.SQLiteOpenHelper 类概要 这是一个辅 ...

  2. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  3. Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析

    前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...

  4. Android中SQLite数据库操作(2)——SQLiteOpenHelper类

    如果开发者对SQL语法不熟悉,我要告诉你一个好消息,Android提供了一个SQLiteOpenHelper类. 在实际项目中很少使用SQLiteDatabase的方法(请看:http://blog. ...

  5. Android中SQLiteOpenHelper类的onUpgrade方法浅谈

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 这个方法在实现时需要重写. onUpg ...

  6. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  7. Android SQLiteOpenHelper(一)

    SQLiteOpenHelper api解释: A helper class to manage database creation and version management. You creat ...

  8. android SQLiteOpenHelper使用示例

    我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的 ...

  9. Android SqliteOpenHelper详解

    一. SQLite介绍 SQLite是android内置的一个很小的关系型数据库. SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息. 博客中有一篇有稍微 ...

随机推荐

  1. (转)实例简述Spring AOP之间对AspectJ语法的支持(转)

    Spring的AOP可以通过对@AspectJ注解的支持和在XML中配置来实现,本文通过实例简述如何在Spring中使用AspectJ.一:使用AspectJ注解:1,启用对AspectJ的支持:通过 ...

  2. HTML编码规范

    HTML编码规范 1 前言 HTML作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用.本文档的目标是使HTML代码风格保持一致,容易被理解和被维护. 2 代码风格 2.1 缩进与换行 [强制 ...

  3. [1]开发准备-使用C#.NET开发基于本地数据缓存的PC客户端

    小记:本人是PHPer,对C#.NET的开发只能说看得懂,也写得了功能略简单的PC客户端程序,下面的是本人开发一款名叫“理财速记”的PC客户端软件的全过程记录,期间包括比较繁琐的C#.NET资料查询等 ...

  4. Xcode 6制作动态及静态Framework

    技术交流新QQ群:414971585 有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Frame ...

  5. hiho一下18周 RMQ问题再临

    RMQ问题再临 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 终于,小Hi和小Ho踏上了回国的旅程.在飞机上,望着采购来的特产--小Hi陷入了沉思:还记得在上上周他们去 ...

  6. [AHOI 2009] 维护序列(线段树模板题)

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec  Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...

  7. HackerRank-Longest Subarray

    give an array and target value, find the max length of the subarray which sum of the elements is les ...

  8. Digital root(数根)

    关于digital root可以参考维基百科,这里给出基本定义和性质. 一.定义 数字根(Digital Root)就是把一个数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这 ...

  9. Hive 中parse_url的使用

    1.Hive的parse_url函数 parse_url(url, partToExtract[, key]) - extracts a part from a URL 解析URL字符串,partTo ...

  10. sqlalchemy 实体属性提前加载

    在flask里需要给视图传送数据,肯定需要把模型的实体属性提前加载,可以使用 sqlalchemy.orm.subqueryload 或 sqlalchemy.orm.joinedload 示例: @ ...