目录
一.前言
我们在使用Android进行开发的时候不可避免的要使用到数据,那么就需要用到数据库,来对数据进行操作。而Android系统就内置了SQlite。
二.SQLite数据库介绍
1.什么是SQLite数据库
SQLite是一款轻量级的关系型数据库,它运算速度快,占用资源少,在内存中只需要占用几百KB的存储空间。
2.特点
- 轻量级
- 独立性
- 隔离性
- 跨平台
- 安全性
- 多语言接口
3.SQLite 操作API
Android SDK提供了一系列对数据库进行操作的类和接口。常用的数据库操作类有:
SQLiteOpenHelper 类(我们今天使用到的是这个)
onCreate(SQliteDatabase db) | 数据库第一次创建时,会调用 |
onIpgrade(SQliteDatabase db, int i, int i1) | 数据库升级时自动调用 |
getWritableDatabase() | 打开可读/写的数据库 |
getReadableDatabase() | 打开可读的数据库 |
close() | 关闭数据库 |
• 该类是一个抽象类,用于创建数据库和数据库版本更新。
SQLiteDatabase 类
• 该类是一个数据库访问类,封装了一系列数据库操作的API,可以对数据进行增删改查操作。
Cursor接口
• 是一个游标接口,在数据库操作中作为返回值,相当于结果集ResultSet。
4.SQLite数据类型
- integer:整型
- real:浮点型
- text:文本类型
- blob:二进制类型
三.SQlite数据库的使用
1.创建类继承SQLiteOPenHelper
先创建一个项目,然后创建一个类,我这里创建的是MySQLiteOpenHelper类,可以再建一个db包把该类放在该目录下。
继承SQLiteOPenHelper,并点击实现onCreate方法和onUpgrade方法用于创建、升级数据库。
飘红不要害怕,点击红色小灯泡构造一下它的构造函数就可以了。
2.创建数据库
我们重写MySQLiteOpenHelper的构造方法,把后面的3个参数都写死,方便后面可以调用,然后写数据库名,还有数据库版本。
//部分代码public class MySQLiteOpenHelper extends SQLiteOpenHelper { Context mContext; public MySQLiteOpenHelper(@Nullable Context context) { super(context, "test", null, 1); this.mContext = context; }}
3.创建数据库表
确定表的字段和类型,我以创建用户表为例。
字段 | 字段类型 | 描述 |
---|---|---|
id | integer 主键自增 | |
zh | text | 账号 |
mm | text | 密码 |
xm | text | 姓名 |
sjh | integer | 手机号 |
定义一个属性等于创建user表语句,这里其实和mysql的语句差不多。
在onCreate方法里面调用SQLiteDatabase.execSQL(CREATE_USER),里面是你刚刚定义的属性。
可以使用Toast提示,当程序启动成功时,是否创建数据库和数据库表了,只会执行一次。
//部分代码public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static String CREATE_USER = "create table user (" + "id integer primary key autoincrement," + "zh text," + "mm text," + "xm text," + "sjh integer)"; Context mContext; public MySQLiteOpenHelper(@Nullable Context context) { super(context, "test", null, 1); this.mContext = context; } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(CREATE_USER); Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show(); }}
在MainActivity添加数据库,添加数据库实例,然后数据库初始化。
MainActivity.java
//完整代码package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import com.example.myapplication.db.MySQLiteOpenHelper;public class MainActivity extends AppCompatActivity { private MySQLiteOpenHelper mySQLiteOpenHelper; private SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); } private void initData() { mySQLiteOpenHelper = new MySQLiteOpenHelper(this); db = mySQLiteOpenHelper.getWritableDatabase(); }}
当运行成功后,使用了Toast,页面会提示
Anddroid提供了查看数据库的功能,点击下面底部小人头像App Inspection,就可以看到我们的数据库库和数据库表了。
我这里贪方便,数据库和数据表一起创建了。如果你是先运行了创建数据库,要往数据库添加数据库表,后面我会说到怎么做。
4.更新表添加字段
在onUpgrade更新表添加字段。
数据库版本往上+1。
//部分代码public mySqliteOpenHelper(@Nullable Context context) { //数据库的版本随着数据库每一次更新+1,原来版本1变成版本2 super(context, "user.db", null, 2);}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //可以多次操作,更新数据库的方法 switch (i) { case 2: String sql = "ALTER TABLE user" + " ADD COLUMN avatar text"; sqLiteDatabase.execSQL(sql); // 执行修改表,添加字段的逻辑。 case 1: // 当前版本就是2,所以目前代码不会进入 case 2: .. 里面来,只会进入 case 1 里面 // xxx 注意,这里不要 break; 要能一直升级。 }}
3.再次运行程序,查看数据库表,可以看到已经增加了avat字段
完整代码
MySQLiteOpenHelper.java
package com.example.myapplication.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;import androidx.annotation.Nullable;public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static String CREATE_USER = "create table user (" + "id integer primary key autoincrement," + "zh text," + "mm text," + "xm text," + "sjh integer)"; Context mContext; public MySQLiteOpenHelper(@Nullable Context context) { super(context, "test", null, 2); this.mContext = context; } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(CREATE_USER); Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //可以多次操作,更新数据库的方法 switch (i) { case 1: String sql = "ALTER TABLE user" + " ADD COLUMN avatar text"; sqLiteDatabase.execSQL(sql); // 执行修改表,添加字段的逻辑。 case 2: // 当前版本就是2,所以目前代码不会进入 case 2: .. 里面来,只会进入 case 1 里面 // 注意,这里不要 break; 要能一直升级。 } }}
扩展
添加表也是和更新表字段差不多,只是需求写创表语句,而sqLiteDatabase.execSQL()方法直接在onUpgrade里执行就可以了(千万要记住数据库版本+1)
总结
SQLiteOpenHelper是Android中用于管理SQLite数据库的一个辅助类。SQLiteOpenHelper类是操作SQLite数据库的重要类,通过它提供的方法,我们可以轻松地创建和管理SQLite数据库。简单易上手,代码易懂,适合新手。