文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android Studio 使用SQLite数据库来创建数据库+创建数据库表+更新表再次往表添加字段

2023-09-25 17:37

关注

目录

一.前言

二.SQLite数据库介绍

1.什么是SQLite数据库

2.特点

3.SQLite 操作API

4.SQLite数据类型

三.SQlite数据库的使用

1.创建类继承SQLiteOPenHelper

2.创建数据库

3.创建数据库表

4.更新表添加字段

完整代码

扩展

总结


一.前言

我们在使用Android进行开发的时候不可避免的要使用到数据,那么就需要用到数据库,来对数据进行操作。而Android系统就内置了SQlite。

二.SQLite数据库介绍

1.什么是SQLite数据库

SQLite是一款轻量级的关系型数据库,它运算速度快,占用资源少,在内存中只需要占用几百KB的存储空间。

2.特点

  1. 轻量级
  2. 独立性
  3. 隔离性
  4. 跨平台
  5. 安全性
  6. 多语言接口 

3.SQLite 操作API

Android SDK提供了一系列对数据库进行操作的类和接口。常用的数据库操作类有:

SQLiteOpenHelper 类(我们今天使用到的是这个)

SQLiteOpenHelper类中常用的方法
onCreate(SQliteDatabase db)数据库第一次创建时,会调用
onIpgrade(SQliteDatabase db, int i, int i1)数据库升级时自动调用
getWritableDatabase()打开可读/写的数据库
getReadableDatabase()打开可读的数据库
close()关闭数据库


• 该类是一个抽象类,用于创建数据库和数据库版本更新。
SQLiteDatabase 类
• 该类是一个数据库访问类,封装了一系列数据库操作的API,可以对数据进行增删改查操作。
Cursor接口
• 是一个游标接口,在数据库操作中作为返回值,相当于结果集ResultSet。

4.SQLite数据类型

  1. integer:整型
  2. real:浮点型
  3. text:文本类型
  4. 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.创建数据库表

确定表的字段和类型,我以创建用户表为例。

user表
字段字段类型描述
idinteger 主键自增
zhtext账号
mmtext密码
xmtext姓名
sjhinteger手机号

定义一个属性等于创建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数据库。简单易上手,代码易懂,适合新手。

来源地址:https://blog.csdn.net/fjh_xx/article/details/131404230

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯