android使用SQLite

article/2025/10/17 9:34:32

文章目录

  • 1.SQLite的特点
  • 2.SQLite的使用
    • 2.1数据库的创建
    • 2.2新增(insert)
    • 2.3修改(update)
    • 2.4删除(delete)
    • 2.5查询(query)
  • 3.使用SQL语句进行数据库操作
  • 4.SQLite事务

1.SQLite的特点

  • SQLite是一个轻量级数据库,它设计目标是嵌入式的,而且占用资源非常低
  • SQLite没有服务器进程,通过文件保存数据,该文件是跨平台的
  • 支持null,integer,real,text,blob五种数据类型,实际上SQLite也接受varchar,char,decimal等数据类型,只不过在运算中或保存时会转换成对应的5种数据类型,因此,可以将各种类型数据保存到任何字段中

2.SQLite的使用

2.1数据库的创建

在android中,创建SQLite数据库非常简单。Android系统推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自SQLiteOpenHelper,并重写该类的onCreateonUpgrade方法即可

在这里插入图片描述

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper {/*** 作为SQLiteOpenHelper子类必须有的构造方法* @param context 上下文参数* @param name 数据库名字* @param factory 游标工厂 ,通常是null* @param version 数据库的版本*/public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}/*** 数据库第一次被创建时调用该方法* @param db*/@Overridepublic void onCreate(SQLiteDatabase db) {// 初始化数据库的表结构,执行一条建表的SQL语句db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");}/*** 当数据库的版本号增加调用* @param db* @param oldVersion* @param newVersion*/	@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

2.2新增(insert)

    public void insert(String name,int age){// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db=dbHelper.getWritableDatabase();// 创建ContentValue设置参数ContentValues contentValues=new ContentValues();contentValues.put("name",name);contentValues.put("age",age);// 插入数据// insert方法参数1:要插入的表名// insert方法参数2:如果发现将要插入的行为空时,会将这个列名的值设为null// insert方法参数3:contentValuelong i=db.insert("user",null ,contentValues);// 释放连接db.close();}

2.3修改(update)

    public void update(String name,int age){// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db=dbHelper.getWritableDatabase();// 创建ContentValue设置参数ContentValues contentValues=new ContentValues();contentValues.put("age",age);// 修改数据// 参数1:tablename// 参数2:修改的值// 参数3:修改的条件(SQL where语句)// 参数4:表示whereClause语句中的表达式的占位符参数列表,这些字符串会替换where条件中?db.update("user",contentValues,"name=?",new String[]{name});// 释放连接db.close();}

2.4删除(delete)

    public void delete(long id) {// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 参数1:tablename// 参数2:删除的条件(SQL语句)// 参数3:给修改的条件注入参数,一个或多个db.delete("user", "u_id=?", new String[]{id + ""});// 释放连接db.close();}

2.5查询(query)

    public void query() {// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 参数1:table_name// 参数2:columns 要查询出来的列名。相当于 select  *** from table语句中的 ***部分// 参数3:selection 查询条件字句,在条件子句允许使用占位符“?”表示条件值// 参数4:selectionArgs :对应于 selection参数 占位符的值// 参数5:groupby 相当于 select *** from table where && group by ... 语句中 ... 的部分// 参数6:having 相当于 select *** from table where && group by ...having %%% 语句中 %%% 的部分// 参数7:orderBy :相当于 select  ***from ??  where&& group by ...having %%% order by@@语句中的@@ 部分,如: personid desc(按person 降序)Cursor cursor = db.query("user", null, null, null, null, null, null);// 将游标移到开头cursor.moveToFirst();while (!cursor.isAfterLast()) { // 游标只要不是在最后一行之后,就一直循环int id=cursor.getInt(0);String name=cursor.getString(1);// 将游标移到下一行cursor.moveToNext();}db.close();}

3.使用SQL语句进行数据库操作

// 通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db = dbHelper.getWritableDatabase();// insert
db.execSQL("insert into user (id,name,age) values (?,?,?)",new Object[]{1,"张三",18});
// update
db.execSQL("update user set name=? where id=?",new Object[]{"张三",1});
// delete
db.execSQL("delete from user where id=1");
// query
Cursor cursor = db.rawQuery("select * from user where id=?", new String[]{"1"});

4.SQLite事务

SQLite数据库同样支持事务

事务操作后一定要使用endTransaction()方法关闭事务,当执行到endTransaction()时,首先会检查是否有事务执行成功标记,有则提交数据库,无则回滚数据

 		DBHelper dbHelper = new DBHelper(MainActivity.this, "test.db", null, 0);// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 开始事务db.beginTransaction();try {// 标记数据库事务执行成功db.setTransactionSuccessful();}catch (Exception e){Log.i("事务处理失败",e.getMessage());}finally {db.endTransaction(); //关闭事务db.close(); // 关闭数据库}

http://chatgpt.dhexx.cn/article/uLywD9N4.shtml

相关文章

Android 操作SQLite基本用法

在Android 开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面。本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的。 一.SQLite的介绍 1.SQLite简介 SQLite是一…

Android中SQLite应用详解

上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。 现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到…

Android SQLite基本用法(极简)

前言 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程&am…

SQLite数据库可视化工具【SQLiteStudio】的下载及安装

上一篇文章介绍了Windows的SQLite数据库安装,但是安装完成后,需要用SQLite命令去管理SQLite数据库,对于初学者不太友好。本文为大家介绍SQLite数据库的可视化工具【SQLiteStudio】,用户可以在SQLiteStudio中,实现对数据…

SQLite下载、安装与连接

1.下载SQLite SQLite官网:https://www.sqlite.org/download.html 根据自己电脑操作系统配置,选择32位或64位下载(一般情况下是64位)。总共两个压缩包。 或者直接去:https://download.csdn.net/download/WenHuiJun_/8…

SQLite 使用(针对Android)

文章目录 1. SQLite 介绍2. SQLite可视化工具 安装3. SQLite的增删改查3.1 SqliteOpenHelper 创建 库或表3.2 SqliteOpenHelper 实现 增删改查 1. SQLite 介绍 SQLite的注意事项: 标准的主键写法:_id。(不标准写法:id),此外&…

AXI 总线入门(一)通道握手-AXI-Lite

AXI 总线(一)通道握手-AXI-Lite 文章目录 AXI 总线(一)通道握手-AXI-Lite关于本系列教程什么是AXI协议AXI读写通道AXI读过程AXI写过程单一通道的握手VALID 信号先到READY信号先到READY和VALID同时到达原则性问题 AXI-Lite总线实现解析生成一个AXI(-Lite)外设整体端口信号解析A(…

【AXI】解读AXI协议乱序机制

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议乱序机制…

AXI协议(数据传输结构)

AXI协议关于Data read and write structure的部分指出,在数据传输过程中,主要涉及三个问题: 窄位宽数据传输(Narrow transfers)地址非对齐传输(Unaligned Transfer)混合大小端传输(…

AXI总线代码详细整理(一)

目录 说明1. AXI 的时钟与复位1.1 时钟1.2 复位 2. 五个通道2.1 Write Address Channel2.2 Write Data Channel2.3 Write Response (B) Channel2.4 Read Address Channel2.5 Read Data (and Response) Channel 3 突发传输机制3.1 突发传输长度和宽度3.2 突发传输类型 说明 文字…

AXI总线详解完结篇

经过几个月的整理和发文,AXI总线详解系列正式迎来最终篇,内容基本涵盖了上一篇文章的全部内容。 所有文章的链接如下: 1、 AXI总线详解 2、AXI总线详解-总线和接口以及协议 3、AXI协议中的通道结构 4、AXI总线详解-AXI4读

AXI接口简介

此部分,有参考他人帖子的内容,加上自己的理解,感恩原作者 1、 AXI(Advanced eXtensible Interface)协议主要描述了主设备(Master)和从设备(Slave)之间的数据传输方式&…

AXI接口协议详解-AXI总线、接口、协议

转自:https://cloud.tencent.com/developer/article/1695010 AXI接口协议详解-AXI总线、接口、协议 AXI 总线 上面介绍了AMBA总线中的两种,下面看下我们的主角—AXI,在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用…

【AXI】解读AXI协议的低功耗设计

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议的低功耗…

AXI总线协议

0.绪论 AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。 AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream。 AXI4.0-lite是AXI的简化…

AXI总线学习------从零开始详细学-----------连载(2)axi protocol 通道分类

AXI总线学习连载(2) 鲁迅曾经说过: 学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。 我也曾经说过: 英文手册非常重要&#xff0c…

【AXI】解读AXI协议中的burst突发传输机制

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议中的burs…

【AXI】解读AXI协议事务属性(Transaction Attributes)

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议事务属性…

AXI总线知多少?

关注、星标公众号,精彩内容每日送达 来源:数字ICer 前言 本文针对秋招面试高频问题: AXI总线进行总结; 1.简介 AXI是个什么东西呢,它其实不属于Zynq,不属于Xilinx,而是属于ARM。它是ARM最新的总线接口&…

AXI学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、AXI中关于非对齐问题理解 AXI 协议支持地址非对齐的传输,允许突发传输的首字节地址,即起始地址与突发传输位宽不对齐。举个例子,总线位…