Android之SQLite数据库的使用

article/2025/10/17 9:24:20

SQLite是比较小而功能比较全的关系型数据库,下面介绍一下SQLite数据库的使用方法,及增删改查操作。

创建一个Android项目;

首先我们需要创建一个DatabaseHelper这个助手类,源码:

package cn.android.sword.sqlite.db;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;public class DatabaseHelper extends SQLiteOpenHelper{private static final int VERSION = 1;private static final String SWORD="SWORD";//三个不同参数的构造函数//带全部参数的构造函数,此构造函数必不可少public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}//带两个参数的构造函数,调用的其实是带三个参数的构造函数public DatabaseHelper(Context context,String name){this(context,name,VERSION);}//带三个参数的构造函数,调用的是带所有参数的构造函数public DatabaseHelper(Context context,String name,int version){this(context, name,null,version);}//创建数据库public void onCreate(SQLiteDatabase db) {Log.i(SWORD,"create a Database");//创建数据库sql语句String sql = "create table user(id int,name varchar(20))";//执行创建数据库操作db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//创建成功,日志输出提示Log.i(SWORD,"update a Database");}}

布局资源文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><Button android:id="@+id/createDatabase"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/createDatabse"/><Button android:id="@+id/updateDatabase"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/updateDatabase"/><Button android:id="@+id/insert"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/insert"/><Button android:id="@+id/update"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/update"/><Button android:id="@+id/query"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/query"/><Button android:id="@+id/delete"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/delete"/></LinearLayout>

在Activity中进行增删改查操作,源码:

package cn.android.sword.sqlite;import cn.android.sword.sqlite.db.DatabaseHelper;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class SQLiteActivity extends Activity implements OnClickListener{private final static String SWORD="SWORD";//声明五个控件对象Button createDatabase=null;Button updateDatabase=null;Button insert=null;Button update=null;Button query=null;Button delete=null;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);findViews();}private void findViews() {//根据控件ID得到控件createDatabase = (Button) this.findViewById(R.id.createDatabase);updateDatabase = (Button) this.findViewById(R.id.updateDatabase);insert = (Button) this.findViewById(R.id.insert);update = (Button) this.findViewById(R.id.update);query = (Button) this.findViewById(R.id.query);delete = (Button) this.findViewById(R.id.delete);//添加监听器createDatabase.setOnClickListener(this);updateDatabase.setOnClickListener(this);insert.setOnClickListener(this);update.setOnClickListener(this);query.setOnClickListener(this);delete.setOnClickListener(this);}@Overridepublic void onClick(View v) {//判断所触发的被监听控件,并执行命令switch(v.getId()){//创建数据库case R.id.createDatabase://创建一个DatabaseHelper对象DatabaseHelper dbHelper1 = new DatabaseHelper(SQLiteActivity.this, "test_db");//取得一个只读的数据库对象SQLiteDatabase db1 = dbHelper1.getReadableDatabase();break;//更新数据库case R.id.updateDatabase:DatabaseHelper dbHelper2 = new DatabaseHelper(SQLiteActivity.this, "test_db", 2);SQLiteDatabase db2 = dbHelper2.getReadableDatabase();break;//插入数据case R.id.insert://创建存放数据的ContentValues对象ContentValues values = new ContentValues();//像ContentValues中存放数据values.put("id", 1);values.put("name","zhangsan");DatabaseHelper dbHelper3 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db3 = dbHelper3.getWritableDatabase();//数据库执行插入命令db3.insert("user", null, values);break;//更新数据信息case R.id.update:DatabaseHelper dbHelper4 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db4 = dbHelper4.getWritableDatabase();ContentValues values2 = new ContentValues();values2.put("name", "xiaosan");db4.update("user", values2, "id=?", new String[]{"1"});break;//查询信息case R.id.query:DatabaseHelper dbHelper5 = new DatabaseHelper(SQLiteActivity.this, "test_db");SQLiteDatabase db5 = dbHelper5.getReadableDatabase();//创建游标对象Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null, null);//利用游标遍历所有数据对象while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));//日志打印输出Log.i(SWORD,"query-->"+name);}break;//删除记录case R.id.delete:DatabaseHelper dbHelper6 = new DatabaseHelper(SQLiteActivity.this,"test_db");SQLiteDatabase db6 = dbHelper6.getWritableDatabase();db6.delete("user", "id=?", new String[]{"1"});break;default:Log.i(SWORD,"error");break;}}
}

在虚拟机中运行:


点击createDatabase按钮查看日志输出:


我们看到成功打印了语句,说明我们的数据库已经创建完毕,那么我们在哪里找到这个数据库呢,当然,有很多中方法,我采用的是一种相对比较麻烦的,不过我用的很顺手,

在File Explorer下的data下的data文件夹中找到我们创建该项目时的包名(cn.android.sword.sqlite),

导出test_db文件,打开这个数据库文件我们可以用SQLite Expert或Navicat软件,我用的是Navicat;

将test_db导入到软件中就可以查看了,一次点击insert,update,query和delete可以看到数据库中数据变化的预期的结果。


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

相关文章

android使用SQLite

文章目录 1.SQLite的特点2.SQLite的使用2.1数据库的创建2.2新增&#xff08;insert)2.3修改&#xff08;update)2.4删除(delete)2.5查询(query) 3.使用SQL语句进行数据库操作4.SQLite事务 1.SQLite的特点 SQLite是一个轻量级数据库&#xff0c;它设计目标是嵌入式的&#xff0…

Android 操作SQLite基本用法

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

Android中SQLite应用详解

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

Android SQLite基本用法(极简)

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

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

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

SQLite下载、安装与连接

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

SQLite 使用(针对Android)

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

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星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字IC精品文章收录】学习路线基础知识总线脚本语言芯片求职EDA工具低功耗设计VerilogSTA设计验证FPGA架构AMBA书籍 解读AXI协议乱序机制…

AXI协议(数据传输结构)

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

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接口简介

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

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

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

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

芯片设计验证社区芯片爱好者聚集地硬件相关讨论社区数字verifier星球四社区联合力荐&#xff01;近500篇数字IC精品文章收录&#xff01;【数字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总线学习连载&#xff08;2&#xff09; 鲁迅曾经说过&#xff1a; 学硬件&#xff0c;不是学哪里查哪里&#xff0c;有一些东西是必须系统的学的&#xff0c;不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。 我也曾经说过&#xff1a; 英文手册非常重要&#xff0c…

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

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

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

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

AXI总线知多少?

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