目录

一.前言

二.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

1.先创建一个项目,然后创建一个类,我这里创建的是MySQLiteOpenHelper类,可以再建一个db包把该类放在该目录下。

2.继承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.创建数据库表

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

user表
字段 字段类型 描述
id integer 主键自增
zh text 账号
mm text 密码
xm text 姓名
sjh integer 手机号

2.定义一个属性等于创建user表语句,这里其实和mysql的语句差不多。

3.在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;}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(CREATE_USER);Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show();}
}

4.在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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();}private void initData() {mySQLiteOpenHelper = new MySQLiteOpenHelper(this);db = mySQLiteOpenHelper.getWritableDatabase();}
}

当运行成功后,使用了Toast,页面会提示

5.Anddroid提供了查看数据库的功能,点击下面底部小人头像App Inspection,就可以看到我们的数据库库和数据库表了。

我这里贪方便,数据库和数据表一起创建了。如果你是先运行了创建数据库,要往数据库添加数据库表,后面我会说到怎么做。

4.更新表添加字段

1.在onUpgrade更新表添加字段。

2.数据库版本往上+1。

//部分代码
public mySqliteOpenHelper(@Nullable Context context) {//数据库的版本随着数据库每一次更新+1,原来版本1变成版本2super(context, "user.db", null, 2);
}@Override
public 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;}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(CREATE_USER);Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show();}@Overridepublic 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数据库。简单易上手,代码易懂,适合新手。

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

  1. android数据库给单选赋值,如何使用android studio将单选按钮的值保存到mysql数据库?...

    我想创建一个投票应用程序,其中有不同的职位,其中有两个职位每个都有两个联系人.我希望当我选择一个人记录到数据库. [职位的disgn与它的参赛者部] 下面是XML代码的一部分:如何使用android ...

  2. Android Studio查看SQLite数据库方法大全

    本文目录 方法1:Stetho Android Studio 中添加代码 Chrome浏览器中调试 方法2:SQLite Expert Professional 第一步:导出模拟器数据库文件 第二步: ...

  3. Android Studio使用SQLite数据库

    文章目录 零.本讲学习目标 一.导入 二.讲解 (一)SQLite数据库 1.SQLite构成 2.SQLite数据类型 3.SQLite数据库特点 (二)使用SQLiteDatabase类操作数据库 ...

  4. Android studio下将项目代码上传至github包括更新,同步,创建依赖

    AS中设置GIT 一.开篇 本文讲如何使用Android Studio将项目上传到github,虽然讲上传github的文章很多,但是大部分都是使用Git Bash命令行,虽然效率高些,但是有点麻烦, ...

  5. 修改 Android Studio 相关模板,以加快项目创建时构建速度,支持Mac,Windows,Linux...

    2019独角兽企业重金招聘Python工程师标准>>> 注: 本文主要在Mac中操作,Windows,Linux操作类似.默认创建Empty Activity项目 Android S ...

  6. Android studio插件GsonFormat,返回json快速创建实体对象

    1. 下载安装GsonFormat插件 如果下载失败,请 1.https://plugins.jetbrains.com/plugin/7654-gsonformat 手动下载GsonFormat 2 ...

  7. android studio的安装(补充篇gradle失败的问题更新于 2021-03-10)

    本来没有打算写这篇文章的 但是很多人看完我的上篇文章之后有所需求 特此写下此文 (加我好友问最下面出现的问题,一律不再回答) 附上上篇android studio的安装,史上最详细(超多图)!! 先说 ...

  8. 【整理】学习Android Studio时遇到的错误及解决方法(持续更新)

    在这儿我整理出我在学习android studio时遇到的一些错误,以备以后学习查询. [错误1] [版本] android studio:3.3.2 OS:win10 [错误类型] 错误: 找不到符 ...

  9. Android Studio Chipmunk 发布啦,快来看看有什么更新

    从狐狸,蜜蜂到现在的花栗鼠,这次虽然也是 Android Studio 的大版本更新,但是本次更新的内容不多,主要是针对 Jetpack Compose 和 profiling 的更新- 原文链接 : ...

最新文章

  1. l5如何通过路由走api版本回退查找设置
  2. c/c++ c++ file c++/stl/boost 判断文件目录是否存在
  3. php拷贝mysql表_MySQL复制表数据或表结构到新表中
  4. python字符类型的一些方法
  5. base 基本用法转载自(MSDN)
  6. 【LOJ】#2479. 「九省联考 2018」制胡窜
  7. Zookeeper基础使用
  8. codeforces731E Funny Game(DP)
  9. oracle主机自增,Oracle中实现ID自增
  10. 产品设计 - AARRR模型,增长和变现
  11. 抖音设备注册生成device_id与install_id hook分析记录
  12. 廖碧儿现身亲吻爱犬 徐濠萦惋惜惠妮休斯顿离世
  13. ubuntu下的3D桌面.compiz
  14. C++ Perf性能调优+火焰图调优
  15. 华为路ws5200设置虚拟服务器,华为路由器WS5200如何设置上网 最详细的华为路由器WS5200上网设置方法教程...
  16. TIA博途中如何设计报警功能块FB,来简化编写离散量报警程序的时间?
  17. matlab做胶州湾地图,惊了,青岛也有了五环地图,快来看你家在几环?
  18. php怎么判断qq内置浏览器,如何判断微信内置浏览器(JS PHP)
  19. mysql单表查询实例_MySQL简单查询详解-单表查询
  20. java怎么求方程的虚根_java解一元二次方程 运行出错?

热门文章

  1. (11)求五百万内的亲和数
  2. 使用eric5集成环境写qt gui程序_huadingjin_新浪博客
  3. 【夸夸其谈】为啥老想玩——浅谈游戏成瘾原因
  4. SearchIndexer.exe持续高占用cpu
  5. uni-app textarea解决点击软键盘上自带收起按钮输入框没有取消焦点的问题(监听软键盘自带收起按钮)
  6. 扫题分享(pdf转world、与佛禅论密码、rot-13)
  7. 惠普服务器DPS-460EB电源维修,DPS-460EB A 04F 499249-001 460W DL380G6 HP服务器电源
  8. cacti linux io,cacti 安装Linux
  9. 递归算法之10硬币组合一角8分
  10. 详细讲解int、float与double的区别