我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android SQLite数据库存储

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android SQLite数据库存储

前言:

      Android为了让我们更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,借助这个类可以简单的对数据库进行创建和升级。

下面介绍一下SQLiteOpenHelper:(扩展知识)

SQLiteOpenHelper类介绍 定义:SQLiteOpenHelper是一个辅助类 作用:管理数据库(创建、增、修、删) & 版本的控制。 使用过程:通过创建子类继承SQLiteOpenHelper类,实现它的一些方法来对数据库进行操作。 在实际开发中,为了能够更好的管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库操作类,然后以这个类为基础,再封装我们的业务逻辑方法。 SQLiteOpenHelper类的数据库操作方法介绍
方法名 作用 备注
onCreate() 创建数据库 创建数据库时自动调用
onUpgrade() 升级数据库
close() 关闭所有打开的数据库对象
execSQL() 可进行增删改操作, 不能进行查询操作
query()、rawQuery() 查询数据库
insert() 插入数据
delete() 删除数据
getWritableDatabase() 创建或打开可以读/写的数据库 通过返回的SQLiteDatabase对象对数据库进行操作
getReadableDatabase() 创建或打开可读的数据库 同上
简单总结上面的:

我们知道:

SQLiteOpenHelper 是一个抽象类,abstract class.

拥有成员变量,mName(数据库名称),mNewVersion(数据库版本),mDatabase(数据库)等.

构造函数需要传递,context,数据库名称,数据库版本等信息.

SQLiteOpenHelper(Context context, String name, CursorFactory factory,int version)

实现了以下函数:

getDatabaseName

getWritableDatabase

getReadableDatabase

onDowngrade

close

subclass需要实现以下函数

public abstract void onCreate(SQLiteDatabase db);

public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion);

​        它是一个抽象类,意味着我们要使用它就需要创建一个自己的类去继承它,两个抽象方法:onCreate()和onUpgrade(),需要重写,实现创建、升级数据库的逻辑。

实例方法:getReadableDatabase()和getWritableDatabase(),如果存在打开,不存在时创建,当磁盘满了,上一个以只读方式打开,writable出现异常。

构造方法:参数:Context,daba_name,Cursor,version

存在位置:/data/data//databases/目录下。

1.创建数据库

我们用AS创建一个DatabaseTest项目,先来熟悉建表的相关语句:

建表语句:
create table Book{
	id integer primary key autoincrement,//组件,id列自增长
	author text,//文本类型
	price real,//浮点型
	pages integer,//整型
	name text)
}
新建MyDatabaseHelper类继承SQLiteOpenHelper
public class MyDatabaseHelper extends SQLitePenHelper{
	pulic static final String CREATE_BOOK = "create table Book("
		+"id integer primary key autonincreament,"
		+"author text,"
		+"price real,"
		+"pages integer,"
		+"name text)";
	private ContextmContext;
	public MyDatabaseHelper(Context context,String name,SQLiteDatabase.
	CursorFactory factory,int version){
	super(context,name,factory,version);
	mContext = context;
	}
	@Override
	public void onCreate(SQLiteDatabase db){
		db.execSQL(CREATE_BOOK);
		Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT)
		.show();
	}
	@Override
	public void onUpagrade(SQLiteDatabase db,int oldVersion, int newVersion)
	){}
}

用Android Studio创建过程:

首先activity_main.xml
 
 
修改MainActivity
public class MainActivity extends AppCompatActivity { 
 private MyDatabaseHelper dbHelper; 
 @Override 
 protected 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() { 
 @Override 
 public void onClick(View v) { 
 dbHelper.getWritableDatabase(); 
 } 
 }); 
 } 
}
查看:

可以使用命令行来查看信息,翻到文末的资料小卡片了解更多->>>

/data/data/com.example.databasetest/databases/

使用ls查看

两个文件,一个BookStore.db,借助sqlite3+数据库名

查看表:.table

.schema查看建表语句

.exit退出

2.升级数据库

如果想添加一张Catagory表用于记录图书的分类

首先:建表语句如下:
create table Category ( 
 id integer primary key autoincrement, 
 category_name text, 
 category_code integer)
添加到MyDatabaseHelper中
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
 db.execSQL("drop table if exists Book"); 
 db.execSQL("drop table if exists Category"); 
 onCreate(db); 
 }

版本升级变为2

public class MainActivity extends AppCompatActivity { 
 private MyDatabaseHelper dbHelper; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); 
 Button createDatabase = (Button) findViewById(R.id.create_database); 
 createDatabase.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 dbHelper.getWritableDatabase(); 
 } 
 }); 
 } 
}

建表完成之后接下来就是基本操作CRUDCreate,Retrieve,Updata,Delete)

3.添加数据

我们在调用SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()方法,返回了SQLitaDatabase对象,所以我们借助这个对象进行操作。

操作的方法

​ insert()方法(表名,null, ContenValues对象:提供put()方法重载以此添加数据)

建立UI
点击事件添加逻辑
Button addData = (Button) findViewById(R.id.add_data); 
 addData.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 SQLiteDatabase db = dbHelper.getWritableDatabase(); 
 ContentValues values = new ContentValues(); 
 // 开始组装第一条数据
 values.put("name", "The Da Vinci Code"); 
 values.put("author", "Dan Brown"); 
 values.put("pages", 454); 
 values.put("price", 16.96); 
 db.insert("Book", null, values); // 插入第一条数据
 values.clear(); 
 // 开始组装第二条数据
 values.put("name", "The Lost Symbol"); 
 values.put("author", "Dan Brown"); 
 values.put("pages", 510); 
 values.put("price", 19.95); 
 db.insert("Book", null, values); // 插入第二条数据
 } 
 });
4.更新数据

​ update()方法(表名,ContenValues对象,第三,第四约束更新的数据,不指定就是默认更新所有行)

UI
逻辑
Button updateData = (Button) findViewById(R.id.update_data); 
 updateData.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 SQLiteDatabase db = dbHelper.getWritableDatabase(); 
 ContentValues values = new ContentValues(); 
 values.put("price", 10.99);
 db.update("Book", values, "name = ?", new String[] { "The Da Vinci 
 Code" }); 
 } 
 });

5.删除数据

​ delete()方法(表名,第二第三约束删除某一行或某几行)

UI
逻辑
deleteButton.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 SQLiteDatabase db = dbHelper.getWritableDatabase(); 
 db.delete("Book", "pages > ?", new String[] { "500" }); 
 } 
 });

6.查询数据

query()方法(表名,指定查询那几列,第三第四约束查询某一行或者某几行,第五指定需要取group by的列,不指定则表示不操作,第六对group by进一步的操作,第七指定查询结果的排序方式)

UI
逻辑
Button queryButton = (Button) findViewById(R.id.query_data); 
 queryButton.setOnClickListener(new View.OnClickListener() { 
 @Override 
 public void onClick(View v) { 
 SQLiteDatabase db = dbHelper.getWritableDatabase(); 
 // 查询 Book 表中所有的数据
 Cursor cursor = db.query("Book", null, null, null, null, null, null); 
 if (cursor.moveToFirst()) { 
 do { 
 // 遍历 Cursor 对象,取出数据并打印
 String name = cursor.getString(cursor.getColumnIndex 
 ("name")); 
 String author = cursor.getString(cursor.getColumnIndex 
 ("author")); 
 int pages = cursor.getInt(cursor.getColumnIndex("pages")); 
 double price = cursor.getDouble(cursor.getColumnIndex 
 ("price")); 
 Log.d("MainActivity", "book name is " + name); 
 Log.d("MainActivity", "book author is " + author); 
 Log.d("MainActivity", "book pages is " + pages); 
 Log.d("MainActivity", "book price is " + price); 
 } while (cursor.moveToNext()); 
 } 
 cursor.close(); 
 } 
 });

7.展示图片:

在这里插入图片描述

8.当然也可以使用SQL或者LitePal操作数据库

例如使用SQL

 添加数据的方法如下:
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)", 
 new String[] { "The Da Vinci Code", "Dan Brown", "454", "16.96" }); 
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)", 
 new String[] { "The Lost Symbol", "Dan Brown", "510", "19.95" }); 
 更新数据的方法如下:
db.execSQL("update Book set price = ? where name = ?", new String[] { "10.99", 
"The Da Vinci Code" }); 
 删除数据的方法如下:
db.execSQL("delete from Book where pages > ?", new String[] { "500" }); 
 查询数据的方法如下:
db.rawQuery("select * from Book", null);

资料:

在命令行操作使用SQL语句操作SQLite数据库

1)adb shell 进入

2)在终端输入“sqlite3”进入命令行操作界面
sqlite>
sqlite>

3)常用的sqlite3命令
.help
.exit/.quit 退出

ctrl+L//清屏

2 常用SQL语句
2.1 创建数据库
语法:
sqlite3 testDB.db
创建名字为testDB.db数据库文件,然后进入sqlite命令行界面
sqlite> .databases //查看当前操作数据库的信息

2.2 创建表(Table)
语法:
CREATE TABLE table_name(
column1 datatype [PRIMARY KEY],
column2 datatype ,
…);
注:不区分大小写,习惯关键字用大写
PRIMARY KEY:主键,表示该类数据不能重复,可以加快数据库的访问,一张表中只有一列可以声明为主键。
eg:创建company表:ID、姓名、年龄、地址、薪资
sqlite> CREATE TABLE company(
…> id INT PRIMARY KEY,
…> name TEXT,
…> age INT,
…> address TEXT,
…> salary REAL NOT NULL);
.tables :查看当前数据库中存在数据表
.schema:查看数据表的完整信息

2.3删除表
语法:
DROP TABLE table_name;

2.4向数据表中插入数据
语法:
INSERT INTO table_name
(column1,column2,column3,…)
VALUES(value1,value2,value3,…)
eg:
sqlite> INSERT INTO company
…> (id,name,salary)
…> VALUES(10086,“张飞”,12000);
sqlite> SELECT * FROM company; //查询表中全部数据

2.5从数据表删除一条数据
语法:
DELETE FROM table_name WHERE [condition];

参考资料:《第一行代码》《Android权威编程指南》


作者:threecat.up


免责声明:

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

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

Android SQLite数据库存储

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android SQLite数据库存储

前言:Android为了让我们更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,借助这个类可以简单的对数据库进行创建和升级。 下面介绍一下SQLiteOpenHelper:(扩展知识) SQLiteOpenHelper
2022-06-06

Android SQLite数据库彻底掌握数据存储

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义
2022-06-06

详解Android数据存储—使用SQLite数据库

SQLite是Android自带的关系型数据库,是一个基于文件的轻量级数据库。Android提供了3种操作数据的方式,SharedPreference(共享首选项)、文件存储以及SQLite数据库。 SQLite数据库文件被保存在/data
2022-06-06

Android数据的四种存储方式之SQLite数据库

Test.java: /*** 本例解决的问题:* 核心问题:通过SQLiteOpenHelper类创建数据库对象* 通过数据库对象对数据库的数据的操作* 1.sql语句方式操作SQLite数据库* 2.谷歌提供的api对SQLite数据库
2022-06-06

Android学习笔记(十二)——数据存储(SQLite数据库)

【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中Che
2022-06-06

Android数据存储之SQLite使用

SQLite是一款开源的、嵌入式关系型数据库,第一个版本Alpha发布于2000年。SQLite在便携性、易用性、紧凑性、高效性和可靠性方面有着突出的表现。 在Android中创建的SQLite数据库存储在:/data/data/<包名>/
2022-06-06

Android持久化存储(3)SQLite数据库的使用

1.什么是SQlite SQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,任何人都可以使用它,许多开源项目(PHP,Python)和当今两大手机操作系统Android和iOS
2022-06-06

Android如何通过SQLite数据库实现数据存储管理

这篇文章主要介绍了Android如何通过SQLite数据库实现数据存储管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。0 实验环境在Android Studio中进行有关代
2023-06-25

如何在Android中使用SQLite存储数据

这篇文章给大家介绍如何在Android中使用SQLite存储数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 安装一个SQLiteDeveloper,这个用来打开android生成的数据库。软件随便搜索就能找到,
2023-05-30

Android使用Sqlite存储数据用法示例

本文实例讲述了Android使用Sqlite存储数据的方法。分享给大家供大家参考,具体如下: 一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个
2022-06-06

sqlite数据库存储的优势有哪些

轻量级:SQLite 是一个轻量级的数据库,不需要独立的服务器,整个数据库就是一个文件,非常适合嵌入式设备和移动应用程序。简单易用:SQLite 的操作和语法非常简单,容易学习和使用,不需要复杂的配置和管理。高性能:SQLite 是一个高性
sqlite数据库存储的优势有哪些
2024-04-09

android studio数据存储建立SQLite数据库怎么实现增删查改

今天就跟大家聊聊有关android studio数据存储建立SQLite数据库怎么实现增删查改,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实验目的:分别使用sqlite3工具和An
2023-06-22

sqlite数据库存储的步骤是什么

创建数据库:使用SQLite的命令行工具或者SQLite的API创建一个新的数据库文件。创建表格:在数据库中创建表格,定义每个表格的列名和数据类型。插入数据:使用INSERT语句将数据插入到表格中。查询数据:使用SELECT语句从表格中检索
sqlite数据库存储的步骤是什么
2024-04-09

Android数据库之Sqlite

sqllie区别于我们以前接触的数据库,它是通过android自带的 方法来驱动数据库的建立:建立数据库表和操作数据库的大致过程:1.让一个类 去继承 SqliteOpenHelper (这是一个抽象类):重写该类的构造方法 ;实现未实现的
2022-06-06

android SQLite数据库总结

SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。 sql语法就不介绍了,直接看在android中的使用
2022-06-06

android创建数据库(SQLite)保存图片示例

代码如下://1.创建数据库public class DBService extends SQLiteOpenHelper { private final static int VERSION = 1;private final stati
2022-06-06

Android之SQLite数据库使用

文章目录 简介关键类SQLiteOpenHelper创建数据库数据库操作insert增加数据update方法更新记录使用delete方法删除记录使用query方法查询记录 简介 SQLite是Android系统集成的一个轻量
2023-08-18

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录