在android中使用sqliteopenhelper这个辅助类时,哪些操作可能生成一个数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android中使用sqliteopenhelper这个辅助类时,哪些操作可能生成一个数据库相关的知识,希望对你有一定的参考价值。

sqliteopenhelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public
databasehelper(context
context,
string
name,
cursorfactory
factory,
int
version)
第一个参数:context类型,上下文对象。
第二个参数:string类型,数据库的名称
第三个参数:cursorfactory类型
第四个参数:int类型,数据库版本
参考技术A 需要你自己写一个类继承SQLiteOpenHelper,然后系统会自动重写它的一个构造方法,一般使用的是四个参数的,在参数里你可以指定数据库的名字。具体你自己试一下。你试就明白了。

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创建数据库

在android中使用sqliteopenhelper这个辅助类时,哪些操作可能生成一个数据库

Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用

在android中使用sqliteopenhelper这个辅助类时,哪些操作可能生成一个数据库

如何操作android中的数据库

Android SQLiteDatabase帮助类SQLiteOpenHelper的使用