Android SQLiteOpenHelper类的使用
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类的使用的更多相关文章
- Android笔记——SQLiteOpenHelper类
public 抽象类 SQLiteOpenHelper 继承关系 Java.lang.Object android.database.sqlite.SQLiteOpenHelper 类概要 这是一个辅 ...
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析
前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...
- Android中SQLite数据库操作(2)——SQLiteOpenHelper类
如果开发者对SQL语法不熟悉,我要告诉你一个好消息,Android提供了一个SQLiteOpenHelper类. 在实际项目中很少使用SQLiteDatabase的方法(请看:http://blog. ...
- Android中SQLiteOpenHelper类的onUpgrade方法浅谈
public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 这个方法在实现时需要重写. onUpg ...
- Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)
一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...
- Android SQLiteOpenHelper(一)
SQLiteOpenHelper api解释: A helper class to manage database creation and version management. You creat ...
- android SQLiteOpenHelper使用示例
我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的 ...
- Android SqliteOpenHelper详解
一. SQLite介绍 SQLite是android内置的一个很小的关系型数据库. SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息. 博客中有一篇有稍微 ...
随机推荐
- Java设计模式(二) 工厂方法模式
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...
- sql 语句 事务
begin transactionbegin insert into BlogUsers(BlogName) values ('测试'); insert into Posts(Po ...
- SpringMVC中定时器继承Task后无法对service注入问题
最近在做一个Spring+MyBatis的一个项目,其中用到了Redis的存储,然后遇到问题是这样的: RedisTask是通过定时器来每分钟像数据库里推送的,于是就有了 public class R ...
- Git标签和别名管理
一.Git标签管理 标签类似于快照功能,可以给版本库打一个标签,记录某个时刻库的状态,也可以随时恢复到该状态 例如给master打一个v1.0的标签 先切换到master分支上去git checkou ...
- relative
进行relative定位后的元素,不会影响原本的文本流. 下图左列的第二张图是进行了margin-top取负值,右列第二张图进行了relative定位
- textarea光标处插入文字
(function($) { $.fn.extend({ //myField 对象元素 myValue 插入值 insertAtCursor: function(myField,myValue) { ...
- iOS_Swift初识之使用三种回调方式自定义Button
最近在学习Swift ,发现青玉伏案大神早期用OC写的一篇博客--IOS开发之自定义Button(集成三种回调模式) 很适合用来熟悉Swift的回调方式,于是我就用Swift翻版了一下,具体实现原理 ...
- C/C++变量名与值的问题
首先说明变量名是不占空间的. 变量:用来标识一块内存空间,这块内存区域的值一般是可以被该的. 而const常量通常限定这一块内存区域的值是不可被更改的. 变量名:只是一个标识符,并不占内存空间.在c的 ...
- 找回MSI安装包Win7/Win8管理员身份功能
找回MSI安装包Win7/Win8管理员身份功能 从Vista开始,系统引入了UAC用户控制功能,即普通用户运行exe软件安装程序,支持使用普通账户/管理员身份分别进行安装,但是msi安装包只支持默认 ...
- ECMAScript 6的解构赋值 ( destructuring assignment)
var provinceValues=["010","020","028","0755","023" ...