Android数据存储之SQLite

Android数据存储之SQLite

SQLite是一个轻量级嵌入式数据库引擎,支持SQL语言。
一、特点:
1、可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite将检查它的数据类型。如果该类型和关联的列不匹配,那么SQLite会尝试将该值转换成该列的数据类型,如果不能转换,那么该值将作为其本身具有的数据类型存储

2、内置丰富API(SQLiteDatabase、SQLiteOpenHelper,Cursor等)

3、存储位置:存储路径在**/data/data//databases/**下

二、接下来结合代码讲述数据库和API的使用:

1、创建DatabaseBaseHelper类来继承SQLiteOpenHelper

public class DatabaseBaseHelper extends SQLiteOpenHelper {

2、实现带有四个参数的构造函数(创建数据库)

public DatabaseBaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

构造函数:里面有四个参数:Context(上下文环境,比如说Activity)、name(数据库的名字,调用时传入)、factory(一个可选的有表工厂,通常是null)、version(当前正在使用的数据库模型版本号)。
其中,name参数表示数据库文件名,SQLiteOpenHelper会根据这个文件名首先进行检测是否存在该数据库,如果不存在,那么就会以这个名字创建一个数据库文件。如果存在这个数据库则会打开数据库。version表示数据库的版本号,如果当前传入的数据库版本号比上次创建或升级的版本号高,那么SQLiteOpenHelper就会调用onUpdate()方法

3、在DatabaseBaseHelper的onCreate方法中创建表

@Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table user(id int,name varchar(20))";
        db.execSQL(sql);
    }
@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 1 && newVersion == 2) {
            String sql = "alter table user add age varchar(20)";
            db.execSQL(sql);
        }
    }

onCreate()方法:传入了一个SQLiteDataBase对象(即当前已经创建或打开的数据库对象)作为参数,对这个对象填充表和初始化数据。
onUpdate()方法:传入了三个参数,一个是SQLiteDataBase的对象,一个数据库旧版本号,一个新版本数据库版本号。实现把一个旧的数据库转变成新的数据库。

如例子中:创建一个user表有两个字段,id和name,当数据库版本从1更新为2时,增加一个字段age;

4、操作数据库的类UtilSqLite(可以是一个任意命名的java类)

    DatabaseBaseHelper dbHelper;//数据库帮助类
    SQLiteDatabase sqlDb;//数据库
    
    public UtilSqLite() {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitysqlite);
        ButterKnife.bind(this);
        dbHelper = new DatabaseBaseHelper(this, "test_db", null, 1);
        sqlDb = dbHelper.getWritableDatabase();
    }

在构造方法中创建一个名为test_db的数据库,版本号为1,通过dbHelper获取到SQLiteDatabase数据库对象

三、在UtilSqLite中通过数据库对象进行增删改查的操作:

增:

Log.i(":", "插入数据");
                if (sqlDb != null) {
                    String sql = "insert into user values(?,?)";
                    sqlDb.execSQL(sql, new Object[]{1, "ytf"});
                }

删:

Log.i(":", "删除数据");
                if (sqlDb != null) {
                    String sql = "delete from user where id=?";
                    sqlDb.execSQL(sql, new Object[]{1});
                }

改:

Log.i(":", "修改数据");
                if (sqlDb != null) {
                    String sql = "update user set name = ? where id = ?";
                    sqlDb.execSQL(sql, new Object[]{"呵呵", 1});
                }

查:

Log.i(":", "查询数据");
                if (sqlDb != null) {
                    String sql = "select * from user where id = ?";
                    Cursor cursor = sqlDb.rawQuery(sql, new String[]{"1"});
                    while (cursor.moveToNext()) {
                        Log.i("Id:", cursor.getString(0));
                        Log.i("Name:", cursor.getString(1));
                    }
                    cursor.close();
                }

AndroidStudio查看数据库
AndroidStudio->View->Tool Windows->Device File Explorer可查看到数据信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值