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;

}

}

}

}

时间: 2024-10-24 20:39:34

Android SQLiteOpenHelper类的使用的相关文章

Android笔记——SQLiteOpenHelper类

public 抽象类 SQLiteOpenHelper 继承关系 Java.lang.Object android.database.sqlite.SQLiteOpenHelper 类概要 这是一个辅助类,用来管理数据库的创建和数据库的版本. 你要创建一个这个类的子类来实现onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int)方法,以及可选的onOpen(SQLiteDatabase)方法,并且这个类要管理数据库的状态,如果数据库存在

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

一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等操作,我们将在onCreate 创建方法中创建一张表和插入相关的值,通过db.execSQL()完成Sqlite的运行. ①openHelper2.java文件: public class openHelper2 extends SQLiteOpenHelper { private static f

【安卓9】SQLiteOpenHelper 类、增删改操作

SQLiteOpenHelper 类 SQLiteOpenHelper类是Android提供的用于操作SQLite数据库的工具类,该工具类能方便地创建数据库.表,以及管理数据库版本. 常用方法 1.    synchronized SQLiteDatabase  getReadableDatabase(); 作用:以读写的方式打开数据库对应的SQLiteDatabase类的对象 2.    synchronized SQLiteDatabase  getWriteableDatabase();

Android SQLiteOpenHelper(一)

SQLiteOpenHelper api解释: A helper class to manage database creation and version management. You create a subclass implementing onCreate(android.database.sqlite.SQLiteDatabase), onUpgrade(android.database.sqlite.SQLiteDatabase, int, int) and optionally

android 小说类源码制作教程源码下载

自己闲着没事制作了个小说软件用来自己看全本/连载小说, 翻页,字体大小,目录,自动更新 具体效果如下:奉献给大家下载查看... 下载APK效果查看地址: http://yun.baidu.com/s/1gdknYyJ 源码下载地址: http://download.csdn.net/detail/ainibaifenbai/7575817 android 小说类源码制作教程源码下载,布布扣,bubuko.com

Android Activity类讲解(一)

--by CY[[email protected]] 1.protected void onCreate(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); } 当创建一个Activity时,系统会自动调用onCreate方法来完成创建工作.该创建工作包括布局,监听器的绑定等. 首先说一下Bundle 这个类,Bundle是一个键值对,跟Map类似,两个Activity之间的通信可以用Bundle类来实现.

android异步类AsyncTask的简单使用

Android为了降低这个开发难度,提供了AsyncTask.AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务,更通俗地说就是一个执行后台任务的线程 而且他还会自动通知主线程更新UI 优点: 结构清晰,容易理解. 缺点 代码量稍大 下面直接看代码 1 private class AsyncLogin extends AsyncTask<Void,Integer,Boolean>{ 2 private EditText passwordEdit; 3 private EditT

Android图像格式类及图像转换方法

Android图像格式类及图像转换方法介绍 一款软件的开发和图像密切相关,特别是移动应用程序,在视觉效果等方面是至关重要的,因为这直接关系 到用户的体验效果.在Android程序开发的过程中,了解存在哪些图像格式类(ImageFormat.PixelFormat及BitmapConfig等)及图像(JPG.PNG及 BMP等)的转换方法,对以后的开发多多少少会有些帮助. 关于图像格式类,介绍以下三个:ImageFormat.PixelFormat及BitmapConfig. 1.ImageFor

Android基类设计方法详解

1 为什么要设计基类 为什么要给程序设计基类呢?主要是出于2个原因,一是方便代码编写,减少重复代码和冗余逻辑,优化代码:二是优化程序架构,降低耦合度,方便拓展.修改. ok,编写代码是程序员的第一步,那么第二步就是要编写高质量的代码,代码能实现功能是一方面,写的优美则是另一方面,这也是我们所有攻城狮们应该追求的境界. 2 设计基类的基本思路 那么,哪些东西我们需要抽象到基类中呢? 2.1 重复的代码:如果一个逻辑是大多数子类都需要使用的 2.2 臭而长的代码:典型的findviewbyid.To