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. Github注册账户过程

    首先打开网站https://github.com/ 第一个是输入用户名第二个是邮箱第三个是自己的密码然后点    sign up for github 此时会有个邮箱注册的验证进入注册的邮箱点击认证. ...

  2. Java中对数据库的查询和增加内容

    先添加jar包 查询数据库中的信息 加载访问驱动,com.mysql.jdbc.Driver--连接到库--写SQL语句 用while循环把表中的信息从第一条到最后一条打印出来,括号中的数字是代表数据 ...

  3. java程序员烂大街为何还不便宜?

    最近跟一朋友聊天,他是做c#开发的.他答应了老板带领一帮java工程师开发网站.披星戴月终于搞定,现在已经盈利.但是他公司的那帮搞c#的同事不淡定了. 在招聘java程序员的时候2年有开15k的.5年 ...

  4. algorithm 学习之 for_each

    对于algorithm里面的函数使用不算多,但是用过之后才发现,之前写过很多多余的代码,所以打算系统的学习使用下algorithm里的东西,首先就是for_each. 先看下for_each的定义: ...

  5. 解决Type 'UnityEngine.Component' does not support slicing

    unity从4.x升级到5.x后部分脚本的编译错误 将animation改成GetComponent.<Animation>()

  6. Single Number

    Given an array of integers, every element appears twice except for one. Find that single one.Your al ...

  7. [课程设计]Scrum 1.3 多鱼点餐系统开发进度

    [课程设计]Scrum 1.3 多鱼点餐系统开发进度   Scrum 1.3 多鱼点餐系统开发进度 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追 ...

  8. dhtmlxScheduler日程安排控件

    dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...

  9. C#编程总结(十四)dynamic

    http://www.cnblogs.com/yank/p/4177619.html C#编程总结(十四)dynamic 介绍 Visual C# 2010 引入了一个新类型 dynamic. 该类型 ...

  10. 压力测试报出503错误---ASP.NET支持大并发的相关配置

    项目反馈报出503错误,需要收集性能数据如下: 1.Windows性能监视器,该应用程序池进程的线程和处理队列 2.问题重现时的进程dump 这是请求到达IIS后遇到的第一个队列,HTTP.sys收到 ...