Android SQLite 数据库存学习与总结

Android 系统内置了一个名为 SQLite 数据库。那么 SQLite 是一种什么样的数据库,它有那些特点,应该怎么操作它?下面,让我们就来认识一下它吧。

1、概念: SQLite 是一种轻量级的关系型数据库,它不仅支持标准的 SQL 语法,还遵守了数据库的 ACID (Atomicity原子性、Consistency 一致性 、Isolation 隔离性 、Durability 持久性)事务。

2、特(优)点:

(1) 运算速度快;
(2) 占用资源少(几百KB);
(3) 能够存储量大且结构复杂的数据。

3、常用数据类型及关键字:

  • integer(整型)
  • real(浮点型)
  • text(文本类型)
  • blob(二进制类型)
  • primary key 设置属性为主键
  • autoincrement 表示属性所在的列是自增长的

4、数据库文件存储路径:/data/data/<package_name>/databases/<databases_name>.db

5、常用操作命令:

(1) 打开数据库:【 sqlite3 <database_name> 】
(2) 查看所有表:【 .table 】
(3) 查看表的构建命令:【 .schema <table_name> 】
(4)退出数据库编辑: 【 .exit 】 或【 .quit 】

在这里插入图片描述

6、创建 SQLite 数据库

第一步: 创建数据库需要定义一个子类去继承 SQLiteOpenHelper 抽象类,然后重写这个类的OnCreate()onUpgrade() 方法,并且还要定义一个构造方法。
其中一个构造方法的参数如下:

  • 参数1:Context
  • 参数2:数据库名称
  • 参数3:cursor(光标,查询数据时可返回,一般填null)
  • 参数4:数据库版本号(用于升级)

第二步:OnCreate() 方法中调用 execSQL() 方法,然后传入一个含 SQL 语句的字符串参数作为创建数据库内容的指令;

第三步: 创建 SQLiteOpenHelper 子类的对象,然后调用对象的 getReadableDatabase()getWritableDatabase() 方法来创建或打开数据库,这两个方法都会返回一个可对数据可进行读写操作的 SQLiteDatabase 对象。不同的是,当数据库不可写入时(如磁盘空间已满),前者返回的对象将会以只读的方式打开数据库,而后者将会出现异常。此外,需要注意的是,当数据库已存在时,程序是不会再创建数据库的。

以下是创建数据库的示例代码:

public class MyDatabaseHelper extends SQLiteOpenHelper {//定义创建book表格的SQL语句public static final String CREATE_BOOK = "create table Book("+"id integer primary key autoincrement,"+"author text,"+"price real,"+"pages integer,"+"name txt)";private Context mContext;public MyDatabaseHelper(@Nullable Context context, @Nullable String name,@Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {//执行SQL语句db.execSQL(CREATE_BOOK);Toast.makeText(mContext, "Create succeeded!", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
public class MainActivity extends AppCompatActivity {private MyDatabaseHelper dbHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);Button createDatabase = (Button) findViewById(R.id.create_database);createDatabase.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dbHelper.getReadableDatabase();}});}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elementPlus自定义el-select下拉样式

如何在f12元素选择器上找到下拉div呢&#xff1f; 给el-select添加 :popper-append-to-body"false" 即可&#xff0c;这样就可以将下拉框添加到body元素中去&#xff0c;否则当我们失去焦点&#xff0c;下拉就消失了&#xff0c;在元素中找不到el-select。剩下就可以…

洛谷 AT_abc169_d [ABC169D] Div Game 题解

思路 想要让操作次数最多&#xff0c; z z z 就要尽可能小。 由于 z z z 是 N N N 的因数&#xff0c;所以 p p p 就是 N N N 的质因数。 设 N N N 的质因数中有 x x x 个 p p p&#xff0c;则这个 p p p 能执行 y y y 此操作&#xff0c;并且 y y y 满足 ∑ i …

怎么压缩图片大小?6种无需牺牲质量的图片压缩方法

经常处理图片的小伙伴都知道&#xff0c;高质量的图片往往会占据电脑大量的存储空间&#xff0c;导致图片传输及存储的不便。因此&#xff0c;掌握如何压缩图片大小变得尤为重要。本文将详细介绍图片压缩的几种方法&#xff0c;帮助你高效地减小图片文件大小&#xff0c;让你的…

使用多智能体辩论微调大型语言模型

F INE - TUNING L ARGE L ANGUAGE M ODELS WITH MULTI - AGENT D EBATE S UPERVISION DebateGPT: Fine-tuning Large Language M

探究Yarn依赖之源:精通why命令的秘籍

&#x1f575;️‍♂️ 探究Yarn依赖之源&#xff1a;精通why命令的秘籍 在现代JavaScript项目开发中&#xff0c;依赖管理是至关重要的一环。Yarn作为领先的包管理器之一&#xff0c;提供了强大的工具来帮助开发者理解项目依赖的起源和结构。yarn why命令就是这样一个工具&am…

IT专业入门,高考假期预习指南-致有志踏入IT领域的高考少年们

IT专业入门&#xff0c;高考假期预习指南 七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。 计算机专业是一个综合性非常强…

【.Net】Web项目部署腾讯云

文章目录 总述前置准备docker-compose部署普通部署 参考 总述 前置准备 云服务添加端口 另有linux本身防火墙请参考&#xff1a; 【Linux】防火墙命令 需安装.Net SDK和Asp .Net Runtime 注意&#xff1a; 1、sdk也要不只是runtime 2、是Asp .Net Runtime不是.Net Runtime …

ConcurrentHashMap并发哈希表的设计与实现

ConcurrentHashMap并发哈希表的设计与实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 介绍ConcurrentHashMap 1. ConcurrentHashMap的概述 ConcurrentH…

一个计算密集小程序在不同CPU下的表现

本文比较了几款CPU对同一测试程序的比较结果&#xff0c;用的是Oracle公有云OCI上的计算实例&#xff0c;均分配的1 OCPU&#xff0c;内存用的默认值&#xff0c;不过内存对此测试程序运行结果不重要。 本文只列结果&#xff0c;不做任何评价。下表中&#xff0c;最后一列为测…

搜索型数据库的技术发展历程与趋势前瞻

概述 随着数字科技的飞速发展和信息量的爆炸性增长&#xff0c;搜索引擎已成为我们获取信息的首选途径之一&#xff0c;典型的代表厂商如 Google。然而&#xff0c;随着用户需求的不断演变&#xff0c;传统的搜索技术已经无法满足人们对信息的实时性、个性化和多样性的需求。 …

Qt应用程序中通过上下左右键选择控件,像win桌面图标选择一样

在Qt应用程序中模拟Windows桌面图标的选择行为&#xff0c;即通过上下左右键来移动选择控件&#xff0c;你需要管理一个焦点系统&#xff0c;该系统能够跟踪哪个控件当前被选中&#xff0c;并根据用户的键盘输入来更新这个状态。以下是一个简化的步骤说明和示例代码&#xff0c…

华为OD机试(D卷+C卷+A卷+B卷)2024真题目录(全、新、准)

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

Maven_构建和pom.xml

概述 Maven是为Java项目提供构建和依赖管理支持的工具 构建环节 清理clean 删除上一次构建的结果 编译compile Java源程序编译成*.class字节码文件 测试test 运行提前准备好的测试程序&#xff0c;执行src/text/java下的junit测试用例 报告site 每次测试后用标准格式记录和…

射频校准简略

射频电路功能的是否正常&#xff0c;在测试时就可发现&#xff0c;而怎么样使测试的数据正确&#xff0c;对测试的仪器进行校准是必不可少的环节&#xff0c;校准的目的就是减少测试的误差&#xff0c;使测试的仪器能够准确的反映待测件的性能&#xff0c;在校准过程中&#xf…

react学习——20react编写github案列

1、List组件 index.js import React, {Component} from "react"; //引入样式 import "./index.css"; export default class List extends Component {render() {const {users,isFirst,isLoding,err}this.propsreturn(<div className"row">…

注意!!2024《信息系统监理师》易混淆知识点来了,赶紧收藏

宝子们&#xff0c;在复习软考信息系统监理师中&#xff0c;是不是觉得有很多知识点含义比较相近&#xff0c;很多友友刚看的时候估计会像我一样迷迷糊糊的&#xff0c;作为一个软考老鸟&#xff0c;在这里给大家整理了信息系统监理师学习过程中易混淆的知识点&#xff0c;大家…

el-tree-transfer插件 入参说明

el-tree-transfer 是一个基于 Vue 和 Element-UI 的树形穿梭框组件&#xff0c;用于实现左右两侧树形结构数据的选择与移动功能。以下是一些基本的入参说明&#xff0c;根据收集到的信息整理得出&#xff1a; title: 类型: Array默认值: [未选, 已选]说明: 穿梭框左右两侧的标题…

Redux 使用及基本原理

什么是Redux Redux 是用于js应用的状态管理库&#xff0c;通常和React一起用。帮助开发者管理应用中各个组件之间的状态&#xff0c;使得状态的变化变得更加可预测和易于调试。 Redu也可以不和React组合使用。&#xff08;通常一起使用&#xff09; Redux 三大原则 单一数据源…

武汉星起航:无锡跨境电商加速“出海”,物流升级助品牌全球布局

随着全球化的不断深入&#xff0c;跨境电商作为数字外贸的新业态&#xff0c;正逐渐成为无锡企业拓展海外市场的重要渠道。武汉星起航关注到&#xff0c;近年来&#xff0c;无锡市通过积极推进国际物流枢纽建设&#xff0c;完善海外仓布局&#xff0c;以及各特色产业带的积极参…