Android-SQLiteOpenHelper使用示例

我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。

(1)当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。

onCreate(SQLiteDatabase db)

(2)当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version)

示例:

(1)创建一个MySQLiteHelper

public class MySQLiteHelper extends SQLiteOpenHelper {
    //调用父类构造器
    public MySQLiteHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }
    /**
    * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
    * 重写onCreate方法,调用execSQL方法创建表
    * */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("create table if not exists hero_info("
                + "id integer primary key,"
                + "name varchar,"
                + "level integer)");
    }
    //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

(2)在activity中使用:

// 创建MySQLiteOpenHelper辅助类对象
        myHelper = new MySQLiteHelper(this, "my.db", null, 1);
        // 向数据库中插入和更新数据
        insertAndUpdateData(myHelper);

        // 查询数据
        String result = queryData(myHelper);
        tv_userinfo.setTextColor(Color.RED);
        tv_userinfo.setTextSize(20.0f);
        tv_userinfo.setText("名字\t等级\n" + result);

// 向数据库中插入和更新数据

    private void insertAndUpdateData(MySQLiteHelper myHelper) {
        // TODO Auto-generated method stub
        // 获取数据库对象
        SQLiteDatabase db = myHelper.getWritableDatabase();
        // 使用execSQL方法向表中插入数据
        db.execSQL("insert into hero_info(name,level) values('bb',0)");
        // 使用insert方法向表中插入数据 

        for(int i = 0 ; i<10 ;i++){
            ContentValues values = new ContentValues();
            values.put("name", "summer"+i);
            values.put("level", i);
            db.insert("hero_info", "id", values);
        }

        // 调用方法插入数据

        // 使用update方法更新表中的数据
        // 清空ContentValues对象
        /*values.clear();
        values.put("name", "summer");
        values.put("level", 10);
        // 更新xh的level 为10
        db.update("hero_info", values, "level = 5", null);*/
        // 关闭SQLiteDatabase对象
        db.close();
    }

// 从数据库中查询数据

public String queryData(MySQLiteHelper myHelper) {
        String result = "";
        // 获得数据库对象
        SQLiteDatabase db = myHelper.getReadableDatabase();
        // 查询表中的数据
        Cursor cursor = db.query("hero_info", null, null, null, null, null,
                "id asc");
        // 获取name列的索引
        int nameIndex = cursor.getColumnIndex("name");
        // 获取level列的索引
        int levelIndex = cursor.getColumnIndex("level");
        for (cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()) {
            result = result + cursor.getString(nameIndex) + "\t\t";
            result = result + cursor.getInt(levelIndex) + "\n";
        }
        cursor.close();// 关闭结果集
        db.close();// 关闭数据库对象
        return result;
    }

以上小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等 。如下图所示:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值