我理解的Android Sqlite

本文详细介绍了Android中SQLite数据库的基本操作,包括SQLiteOpenHelper的onCreate()和onUpgrade()方法,以及SQLiteDatabase的增删改查方法。通过示例展示了如何创建数据库、更新版本、插入、更新、删除和查询数据。同时,强调了数据库对象的获取和关闭过程。
摘要由CSDN通过智能技术生成

Android SqLite :基本操作

在这里插入图片描述


Sqlite 介绍

  • SQLite是Android内置的一个小型、关系型、属于文本型的数据库
  • 应用程序中可以访问任何的数据库,但是应用程序之外的则不能访问

简单理解Android 中的Sqlite

就两个对象,SQLiteOpenHelper 对象 和 SQLiteDatabase 对象

介绍
SQLiteOpenHelper负责 创建/升级/降级数据库
SQLiteDatabase负责 具体的增删改查

SQLiteOpenHelper 对象介绍

因为SQLiteOpenHelper 是一个抽象类,所以一般我们会写一个子类继承它,看看它有哪些常用的方法

方法介绍
onCreate()创建数据库,可以在该方法中执行创建表的sql语句,从而创建表
onUpgrade()当数据库的版本号发生变化后,自动调用该方法.此方法一般做一些对表结构更改的操作
onDowngrade()当数据库降级时调用该方法

SQLiteDatabase 对象介绍

Android提供了创建和使用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。

方法介绍
getWritableDatabase()获取一个可以读/写的数据库对象
getReadableDatabase()获取一个可以读的数据库对象
insert()插入数据
delete()删除数据
query()查询数据
rawQuery()执行sql,查询数据
execSQL()执行增/删/改操作 ,不能用于查询
close()关闭数据库对象

CODE

Android操作数据,两件事,1.创建数据库,2对数据库进行增删改查

第一步,写一个类继承 SQLiteOpenHelper,并重写onCreate() 和 onUpgrade()方法
public class MyDbOpenHelper extends SQLiteOpenHelper {
    public MyDbOpenHelper(@Nullable Context context,String tableName,int DbVersion) {
        /**
         * super 必须调用
         * 参数 [上下文][书库名称][一个可选的游标工厂(通常是 Null)][数据库版本号]
         */
        super(context, tableName, null, DbVersion);
    }
    /**
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        /**
         * 第一次创建数据库的时候调用
         * 作用:创建表,创建后可对表进行初始化操作(插入一些数据)
         * 此处创建一个book 的表
         */
        String sql = "create table "+DbInfo.TABLE_GOODS_BOOK+" ("+DbInfo.BOOOK_COLUMN_ID+","+DbInfo.BOOK_COLUMN_NAME+")";
        db.execSQL(sql);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        /**
         * 当版本号发生变化的时候,就会调用该方法
         * 可以对表结构,字段等进行操作
         */
        String upSql = "alter table book add bookPirce int(20)";
        db.execSQL(upSql);
    }
}
第二步,就可以开始用了

在需要的地方,通过创建上面的数据库辅助对象(MyDbOpenHelper),拿到真正数据库对象(SQLiteDatabase)从而进行增删改查

在操作增删改查之前,都需要先获取一个 SQLiteDatabase对象

  1. 先new 一个MyDbOpenHelper对象,
  2. 用实例化的MyDbOpenHelper对象调用getWritableDatabase()或者getReadableDatabase()获取
   MyDbOpenHelper dbOpenHelper = new MyDbOpenHelper(MainActivity.this, DbInfo.TABLE_GOODS_BOOK, DbInfo.DB_VERSION);
   SQLiteDatabase writableDatabase = dbOpenHelper.getWritableDatabase();

一下都使用Sql 语句进行增删改查,仅个人喜好而已

插入
 /**
     * 插入
     */
    public void inset(){
        //创建一个MyDbOpenHelper对象是无法创建/打卡链接的
        SQLiteOpenHelper dbOpenHelper = new MyDbOpenHelper(MainActivity.this,DbInfo.TABLE_GOODS_BOOK,DbInfo.DB_VERSION);
        //调用getWriteableDatabase()或者getReadableDatabase()方法才创建/打开链接
        SQLiteDatabase writableDatabase = dbOpenHelper.getWritableDatabase();
        //插入Sql 语句
        String insertSql = "insert into "+DbInfo.TABLE_GOODS_BOOK+" ("+DbInfo.BOOOK_COLUMN_ID+","+DbInfo.BOOK_COLUMN_NAME+")values(1,'林肯传说')";
        //执行语句
        writableDatabase.execSQL(insertSql);
        /**
         * 关闭数据库
         */
        writableDatabase.close();

    }

更新版本

 /**
     * 版本更新升级
     */
    private void updateVerson() {
        //此构造函数中的 DbInfo.DB_VERSION 已经是更新后的版本号,版本号变更后引发执行 MyDbOpenHelper类中onUpgrade() 的方法
        MyDbOpenHelper dbOpenHelper = new MyDbOpenHelper(MainActivity.this,DbInfo.TABLE_GOODS_BOOK, DbInfo.DB_VERSION);
        //升级后,插入一条数据,增加字段,然后插入一条
        SQLiteDatabase writableDatabase = dbOpenHelper.getWritableDatabase();
        String insertSql = "insert into "+DbInfo.TABLE_GOODS_BOOK+"("+DbInfo.BOOOK_COLUMN_ID+","+DbInfo.BOOK_COLUMN_NAME+","+DbInfo.BOOK_COLUMN_PRICE+") values(11,'共和国历史',999)";
        writableDatabase.execSQL(insertSql);
        //查询
        String querySql = "select * from "+DbInfo.TABLE_GOODS_BOOK;
        Cursor cursor = writableDatabase.rawQuery(querySql, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(DbInfo.BOOOK_COLUMN_ID));
            String name = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_NAME));
            String prie = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_PRICE));
            System.out.println("id="+id+"******name="+name+"********price="+prie);
        }
        /**
         * 关闭数据库
         */
        writableDatabase.close();
    }
删除

 /**
     * 删除
     */
    private void delete() {
        MyDbOpenHelper dbOpenHelper = new MyDbOpenHelper(MainActivity.this, DbInfo.TABLE_GOODS_BOOK, DbInfo.DB_VERSION);
        SQLiteDatabase writableDatabase = dbOpenHelper.getWritableDatabase();
        String delSql = "delete from "+DbInfo.TABLE_GOODS_BOOK+" where "+DbInfo.BOOK_COLUMN_PRICE+" = '999'";
        writableDatabase.execSQL(delSql);
        //查询
        String querySql = "select * from "+DbInfo.TABLE_GOODS_BOOK;
        Cursor cursor = writableDatabase.rawQuery(querySql, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(DbInfo.BOOOK_COLUMN_ID));
            String name = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_NAME));
            String prie = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_PRICE));
            System.out.println("id="+id+"******name="+name+"********price="+prie);
        }
        /**
         * 关闭数据库
         */
        writableDatabase.close();


    }
更新数据
 /**
     * 更新
     */
    private void update() {
        MyDbOpenHelper dbOpenHelper = new MyDbOpenHelper(MainActivity.this, DbInfo.TABLE_GOODS_BOOK, DbInfo.DB_VERSION);
        SQLiteDatabase writableDatabase = dbOpenHelper.getWritableDatabase();
        String updateSql = "update "+DbInfo.TABLE_GOODS_BOOK+" set "+DbInfo.BOOK_COLUMN_PRICE+"= 1000 where "+DbInfo.BOOOK_COLUMN_ID+" = 11";
        writableDatabase.execSQL(updateSql);
        //查询
        String querySql = "select * from "+DbInfo.TABLE_GOODS_BOOK;
        Cursor cursor = writableDatabase.rawQuery(querySql, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(DbInfo.BOOOK_COLUMN_ID));
            String name = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_NAME));
            String prie = cursor.getString(cursor.getColumnIndex(DbInfo.BOOK_COLUMN_PRICE));
            System.out.println("id="+id+"******name="+name+"********price="+prie);
        }
        /**
         * 关闭数据库
         */
        writableDatabase.close();
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值