安卓Sqlite数据存储流程解析

合集下载

sqlite数据库存储过程的写法

sqlite数据库存储过程的写法

SQLite是一种轻量级的数据库管理系统,它可以在各种操作系统上运行,并且可以在嵌入式设备和大型企业服务器上使用。

SQLite的存储过程功能使得用户可以将一系列的SQL语句保存和执行,这为用户提供了更加灵活和高效的数据操作方式。

1. 存储过程的定义SQLite的存储过程是一组为了完成特定任务而保存在数据库中的SQL 语句集合。

存储过程可以接受参数,进行计算,生成结果集等。

存储过程的主要作用是为了提高数据库操作的效率和安全性,并且可以减少客户端和服务器之间的通信次数。

2. 存储过程的语法SQLite的存储过程使用CREATE PROCEDURE语句进行定义,语法格式如下:```sqlCREATE PROCEDURE procedure_name (parameter1, parameter2, ...)ASsql_statement;```其中,procedure_name为存储过程的名称,parameter1, parameter2为存储过程的参数,sql_statement为存储过程的SQL 语句。

3. 存储过程的参数SQLite的存储过程可以接受零个或多个参数,参数可以是输入参数、输出参数或者输入输出参数。

存储过程的参数在定义时需要指定参数的名称和数据类型,以及参数的模式(输入、输出或输入输出)。

```sqlCREATE PROCEDURE procedure_name (IN parameter1data_type, OUT parameter2 data_type, INOUT parameter3 data_type)ASsql_statement;```4. 存储过程的实例下面我们用一个实例来演示SQLite存储过程的写法。

假设我们需要创建一个存储过程,通过传入两个参数计算它们的和并返回结果。

```sqlCREATE PROCEDURE add_two_numbers (IN num1 INTEGER, IN num2 INTEGER, OUT result INTEGER)ASBEGINSET result = num1 + num2;END;```在上面的例子中,我们定义了一个名为add_two_numbers的存储过程,它接受两个输入参数num1和num2,并返回一个输出参数result。

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

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

详解Android数据存储—使⽤SQLite数据库SQLite是Android⾃带的关系型数据库,是⼀个基于⽂件的轻量级数据库。

Android提供了3种操作数据的⽅式,SharedPreference(共享⾸选项)、⽂件存储以及SQLite数据库。

SQLite数据库⽂件被保存在/data/data/package_name/databases⽬录下。

⼀、创建和删除表1.创建表创建表的SQL语句为:CREATE TABLE userInfo_brief (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,password TEXT);对应的Java代码为:final static int VERSION=1;final static String TABLENAME="userInfo_brief";final static String ID="id";final static String NAME="name";final static String PASSWORD="password";String sql="CREATE TABLE "+TABLENAME+"("+"ID"+" INTEGER PRIMARY KEY AUTOINCREMENT,"+NAME+" TEXT,"// Attention:注意SQL语法,每个变量后需要有空格,否则不认识。

+PASSWORD+" TEXT,"+AGE+" TEXT);";db.execSQL(sql);2.删除表SQL语句为:DROP TABLE userInfo_brief;对应的java代码为:String sql="DROP TABLE "+TABLENAME+";";db.execSQL(sql);⼆、操作数据库中的记录1.插⼊记录insert⽤法:SQliteDatabase.insert(String table,String nullColumnHack,ContentValues values)ContentValues values=new ContentValues();//获取ContentValues对象,类似HashMAPvalues.put(, name);//键值对形式保存数据values.put(DatabaseHelper.PASSWORD, pass);values.put(DatabaseHelper.AGE, age);db.insert(DatabaseHelper.TABLENAME, null, values);2.更新记录update使⽤⽅法:复制代码代码如下:SQliteDatabase.update(String table,ContentValues values,String where-Clause,String[] WhereArgs)eg:更新表中name为bob的密码ContentValues values=new ContentValues();values.put(PASSWORD,"123456");//要更新的数据db.update(TABLENAME,values,NAME+"=?",new String[]{"bob"});3.删除记录delete使⽤⽅法:SQliteDatabase.delete(String table,String where-Clause,String[] WhereArgs)eg:删除那么为bob的记录db.delete(TABLENAME,NAME+"=?",new String[]{"bob"});4.查询记录1.单表查询使⽤SQLiteDatabase.query(7个参数)。

Android开发学习笔记:数据存取之SQLite浅析

Android开发学习笔记:数据存取之SQLite浅析

Android开发学习笔记:数据存取之SQLite浅析update(String table,ContentValues values,String修改记录whereClause,String[]whereArgs)execSQL(String sql)执行一条SQL语句close()关闭数据库1、打开或者创建数据库在Android中以使用SQLiteDatabase的静态方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打开或者创建一个数据库。

它会自动去检测是否存在这个数据库,如果存在则打开,不存在则创建一个数据库;创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。

下面是创建名为“stu.db”数据库的代码:1db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/d atabases/stu.db",null);2、创建表创建一张表很简单。

首先,编写创建表的SQL语句,然后,调用SQLiteDatabase的execSQL()方法来执行SQL语句便可以创建一张表了。

下面的代码创建了一张用户表,属性列为:_id(主键并且自动增加)、sname(学生姓名)、snumber(学号)2private void createTable(SQLiteDatabase db){34//创建表SQL语句5String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";67//执行SQL语句8db.execSQL(stu_table);9}3、插入数据插入数据有两种方法:①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,参数一是表名称,参数二是空列的默认值,参数三是ContentValues类型的一个封装了列名称和列值的Map;②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行第一种方法的代码:10private void insert(SQLiteDatabase db){1112//实例化常量值13ContentValues cValue=new ContentValues();1415//添加用户名16cValue.put("sname","xiaoming");1718//添加密码19cValue.put("snumber","01005");2021//调用insert()方法插入数据22db.insert("stu_table",null,cValue);23}第二种方法的代码:24private void insert(SQLiteDatabase db){2526//插入数据SQL语句27String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";2829//执行SQL语句30db.execSQL(sql);31}4、删除数据删除数据也有两种方法:①调用SQLiteDatabase的delete(String table,String whereClause,String[]whereArgs)方法,参数一是表名称,参数二是删除条件,参数三是删除条件值数组;②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。

android sqlite基本知识

android sqlite基本知识

android sqlite基本知识Android SQLite是一种轻量级的嵌入式关系型数据库,广泛应用于Android应用程序的数据存储和管理。

本文将介绍Android SQLite 的基本知识,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等操作。

一、创建数据库在Android中使用SQLite数据库,首先要创建一个数据库。

可以通过继承SQLiteOpenHelper类来实现数据库的创建和版本管理。

SQLiteOpenHelper类提供了两个重要的方法,onCreate()和onUpgrade()。

onCreate()方法在数据库第一次被创建时调用,onUpgrade()方法在数据库版本发生变化时调用。

二、创建表数据库中的数据以表的形式存储。

在SQLite中,可以使用SQL语句来创建表,包括指定表的名称、字段名称和字段类型等。

创建表的操作通常在onCreate()方法中完成。

三、插入数据插入数据是将数据添加到表中的过程。

可以使用SQL语句的INSERT INTO语句来插入数据。

在Android中,可以使用ContentValues类来封装要插入的数据。

通过调用insert()方法,将封装好的ContentValues对象传入,即可实现数据的插入操作。

四、查询数据查询数据是从表中检索数据的过程。

可以使用SQL语句的SELECT 语句来查询数据。

在Android中,可以使用query()方法来执行查询操作。

query()方法接收多个参数,包括要查询的表名称、要查询的字段名称和查询条件等。

五、更新数据更新数据是修改表中已有数据的过程。

可以使用SQL语句的UPDATE语句来更新数据。

在Android中,可以使用update()方法来执行更新操作。

update()方法接收多个参数,包括要更新的表名称、要更新的字段和更新条件等。

六、删除数据删除数据是从表中删除数据的过程。

可以使用SQL语句的DELETE FROM语句来删除数据。

Android学习之SQLite数据库存储

Android学习之SQLite数据库存储

Android 学习之SQLite 数据库存储•引⾔概念 SQLite 数据库,和其他的SQL 数据库不同, 我们并不需要在⼿机上另外安装⼀个数据库软件,Android 系统已经集成了这个数据库;特点SQLite 是⼀个轻量级的关系型数据库,运算速度快,占⽤资源少,很适合在移动设备上使⽤不仅⽀持标准SQL 语法,还遵循ACID(数据库事务)原则,⽆需账号,使⽤起来⾮常⽅便SQLite ⽀持五种数据类型NULLinteger (整型)real(浮点型)text(⽂本类型)blob(⼆进制类型)SQLite 通过⽂件来保存数据库⼀个⽂件就是⼀个数据库数据库中⼜包含多个表格表格⾥⼜有多条记录每条记录由多个字段构成每个字段都有对应的值•创建数据库 Android 为了让我们能够更加⽅便地管理数据库,专门提供了⼀个 SQLiteOpenHelper 帮助类; 借助这个类就可以⾮常简单地对数据库进⾏创建和升级。

SQLiteOpenHelper 是⼀个抽象类,这意味着如果我们想要使⽤它的话,就需要创建⼀个⾃⼰的帮助类去继承它; SQLiteOpenHelper 中有两个抽象⽅法,分别是 和 ;: 数据库第⼀次被创建时被调⽤: 在数据库的版本发⽣变化时会被调⽤⼀般在软件升级时才需改变版本号,⽽数据库的版本是由程序员控制的假设数据库现在的版本是 1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新⽤户⼿机⾥的数据库表结构为了实现这⼀⽬的,可以把原来的数据库版本设置为 2,或者其他与旧版本号不同的数字即可 我们必须在⾃⼰的帮助类⾥⾯重写这两个⽅法,然后分别在这两个⽅法中去实现 创建、升级数据库 的逻辑。

SQLiteOpenHelper 中还有两个⾮常重要的实例⽅法: 和 。

这两个⽅法都可以 创建或打开 ⼀个现有的数据库(如果数据库已存在则直接打开,否则创建⼀个新的数据库), 并返回⼀个可对数据库进⾏读写操作的对象。

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作随着移动应用的不断发展,电子设备成为人们生活中不可或缺的一部分。

而Android操作系统作为最广泛使用的移动操作系统之一,它提供了强大的开发平台,为开发者们提供了各种各样的开发工具和API。

其中,SQLite作为Android应用中的一种轻量级数据库管理系统,被广泛应用于数据存储和管理。

本文将介绍在Android应用中通过SQLite实现本地数据库操作的方法。

1. 简介SQLite是一种无服务器的自包含的数据库引擎,它在Android操作系统中作为默认的关系型数据库引擎。

它无需独立的服务器进程,将数据库引擎与应用程序合并在一起,使得应用程序可以直接操作数据库。

SQLite在移动设备上非常流行,因为它占用的磁盘空间相对较少,并且提供了性能高效的操作方式。

2. 创建数据库在Android应用中使用SQLite进行本地数据库操作,首先需要创建一个数据库。

Android提供了SQLiteOpenHelper类来管理数据库的创建和升级。

在创建数据库之前,首先需要定义数据库的结构,包括表的结构和字段信息。

接着,通过继承SQLiteOpenHelper类,重写onCreate()方法和onUpgrade()方法,可以自动创建数据库和升级数据库。

3. 创建表使用SQLite进行本地数据库操作时,需要在数据库中创建表来存储数据。

通过执行SQL语句,可以在数据库中创建表以及定义表中的字段信息。

SQLite支持多种数据类型,包括整型、浮点型、文本型等。

通过在SQL语句中指定字段的名称和类型,可以创建适合应用需求的表。

4. 插入数据插入数据是在数据库中进行本地数据库操作的常见操作之一。

通过执行SQL 语句的INSERT INTO语句,可以将数据插入到数据库的表中。

通过使用ContentValues类,可以方便地设置插入数据的字段值。

通过调用SQLiteDatabase 类的insert()方法,可以执行插入数据的操作。

Android学习笔记034之数据存储—SQLite数据库

Android学习笔记034之数据存储—SQLite数据库

Android学习笔记034之数据存储—SQLite数据库前面我们介绍了Android数据存储的两种方法:文件存储和SharedPreference存储,这一篇我们来学习一下Android存储数据的另外一种方式——SQLite数据库存储。

1、SQlite数据库简介现在的主流移动智能设备中,比如Android手机、iPhone手机,平板等都是使用SQLite 数据库作为存储复杂数据的存储引擎。

那么什么是SQLite数据库呢?SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎,它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。

SQLite由以下几个部分组成:SQL 编译器、内核、后端以及附件。

SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),是调试、修改和扩展SQLite的内核变得更加方便。

所有SQL语句都被编译成易读的、可以在SQLite 虚拟机中执行的程序集。

SQlite数据库是一个轻量级的关系型数据库,不需要像其它关系型数据库一样需要安装,Android已经将SQLite数据库内置在系统中,内置的版本是3.0版本。

SQlite支持标准的SQL语法,还支持ACID(数据库事务)原则,占用资源非常少,非常适合在移动设备中使用。

袖珍型的SQLite数据库就可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据都是以B-Tree的数据结构形式存储在磁盘上。

每一个数据库是一个文件,数据库中可以包含多个表,表中可以包含多个字段。

SQLite数据库支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,分别代表空值、整型值、浮点值、字符串文本、二进制对象。

SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。

android sqlite用法

android sqlite用法

android sqlite用法标题:Android SQLite用法:一步一步回答引言:SQLite是一种嵌入式的关系型数据库管理系统,广泛应用于移动设备开发领域。

在Android开发中,SQLite是一项重要的技术,用于存储和管理应用程序的数据。

本文将详细介绍Android中SQLite的用法,并提供一步一步的回答,帮助读者快速上手。

第一步:创建数据库和表格在Android中使用SQLite之前,我们需要先创建一个数据库和相关的表格。

首先,在Android项目的res文件夹中的“raw”目录下创建一个数据库文件(例如"mydatabase.db")。

然后,使用SQLiteOpenHelper类创建一个帮助类,继承自SQLiteOpenHelper,并实现onCreate()方法和onUpgrade()方法。

在onCreate()方法中,我们可以执行创建表格的SQL 语句,如下所示:Overridepublic void onCreate(SQLiteDatabase db) {String createTable = "CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";db.execSQL(createTable);}第二步:打开和关闭数据库连接使用SQLiteOpenHelper类创建的帮助类可以帮助我们打开和关闭数据库连接。

在需要操作数据库的地方,我们可以调用getWritableDatabase()方法或getReadableDatabase()方法来获取一个可写或可读的数据库对象,如下所示:DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); 可写数据库操作完成后,我们需要及时关闭数据库连接,以节省资源。

android sqlite数据库 原理

android sqlite数据库 原理

android sqlite数据库原理1. 引言1.1 概述在移动应用开发中,使用数据库是非常常见的需求之一。

Android平台提供了一种轻量级的数据库引擎,即SQLite。

SQLite是一种嵌入式关系型数据库管理系统,它以小型、快速和可靠的特点而受到广泛应用。

本篇文章将介绍Android中使用SQLite数据库的原理和相关知识。

我们将深入探讨数据库基础知识,以及了解SQLite在Android平台中的应用。

通过对SQLiteOpenHelper类的解析,我们可以学习如何创建和更新数据库,并执行SQL操作和查询数据。

此外,我们还将探讨关于数据库事务管理和性能优化方面的内容。

了解事务管理概述以及增加性能的技巧与注意事项将帮助我们设计更高效的数据库操作。

最后,在结论部分,我们将总结主要观点和所获得的结果,并对未来在Android 开发中使用SQLite数据库提出展望和建议。

1.2 文章结构本文分为五个主要部分:- 引言:介绍本文主题和目标。

- Android SQLite数据库原理:阐述数据库基础知识、SQLite简介和SQLite 操作流程。

- Android中的SQLite数据库应用:讲解SQLiteOpenHelper类、创建和更新数据库,以及执行SQL操作和查询数据。

- 数据库事务管理和性能优化:探讨事务管理概述、增加性能的技巧与注意事项,以及避免常见错误和陷阱的方法。

- 结论:总结主要观点和发现结果,提出对未来的展望和建议。

1.3 目的本文的目的是帮助读者全面了解Android平台中使用SQLite数据库的原理和应用。

通过深入研究数据库基础知识、SQLite引擎以及在Android中操作数据库的流程,读者将能够更好地应用SQLite数据库进行数据存储和查询。

此外,通过学习数据库事务管理和性能优化方面的内容,读者将获得设计高效数据库操作的指导,并避免一些常见错误和陷阱。

通过本文的阐述,读者将可以从理论到实践地掌握Android平台中使用SQLite 数据库所需的知识和技术,并为未来在移动应用开发中构建更稳定、高效、可靠的数据库功能提供指导。

数据存储之 SQLite 数据库操作(一)

数据存储之 SQLite 数据库操作(一)

上一讲我们讲解了 Android 中SD卡的存储方式[数据存储之File 文件存储 [即SD卡的写入与读取]],共享参数的存储方式[SharedPreference 共享参数],这一讲我们来讲解一下数据库的存储方式,SQLite数据库属于文本型的数据库,它是以文本的形式来保存的。

1. SQLite 数据库介绍查看 Android API文档中SQLite的介绍Android提供了对 SQLite 数据库的完全支持,应用程序中的任何类都可以通过名称来访问任何的数据库,但是应用程序之外的就不能访问。

建议创建一个新的数据库的方式就是创建一个子类继承SQLiteOpenHelper 然后重写它的 onCreate() 方法,这样你就可以在数据库中执行 SQLite的语法命令来创建表了查看API文档中SQLiteOpenHelper类的介绍这是一个帮助类,作用是管理数据库的创建和版本的管理,你可以创建一个子类来实现 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) 方法,onOpen(SQLiteDatabase)可以选择是否要实现。

这个类负责在数据库存在的情况下,打开数据库,如果它不存在则会创建数据库,并且在必要的时候更新它。

事务也会被使用到,这样才能确保数据库总是在合理的状态。

查看它的方法列表:getReadableDatabase() 可以通过这个方法进行数据库的创建和打开2. 程序实现1) DBOpenHelper.java 用来更新或者创建数据库使用[java]view plaincopy1.package com.android.sqlitedemo.db;2.3.import android.content.Context;4.import android.database.DatabaseErrorHandler;5.import android.database.sqlite.SQLiteDatabase;6.import android.database.sqlite.SQLiteOpenHelper;7.import android.database.sqlite.SQLiteDatabase.CursorFactory;8.9.public class DBOpenHelper extends SQLiteOpenHelper {10.11./**12. * 查看SQLiteOpenHelper api文档的,它的构造方法13. * public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)14. * 创建一个帮助类的对象来创建,打开,或者管理一个数据库,这个方法总是会快速的返回,15. * 这个数据库实际上是没有被创建或者打开的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一个被调用时才会进行创建或者打开16. * 参数:17. * context :上下文对象,用来打开或者创建数据库18. * name :数据库文件的名称,如果是创建内存中则位null ,19. * factory :用来创建游标对象,默认的是为null20. * version :数据库的版本号(以版本数字号1开始),如果数据库比较旧,就会用 onUpgrade(SQLiteDatabase, int, int) 方法来更新数据库,21. * 如果数据库比较新,就使用 onDowngrade(SQLiteDatabase, int, int) 方法来回退数据库22. * 【注意】 : 我们声明完这个构造方法之后,包括初始化它的名称和版本之后,实际上它还是没有马上被创建起来的。

AndroidSQLite教程:内部架构及SQLite使用办法

AndroidSQLite教程:内部架构及SQLite使用办法

AndroidSQLite教程:内部架构及SQLite使用办法Android SQLite 教程:内部架构及SQLite 使用办法2022年-03-06 09:13 谢亚力IBM 我要评论(0) 字号:T |T本文主要讲解SQLite 在Android 环境中的基本使用。

Android 在运行时集成了SQLite,所以每个Android 应用程序都可以使用SQLite 数据库。

对数熟悉SQL 的开发人员来时,使用SQLite 相当简单。

AD:2022年大数据全球技术峰会低价抢票中SQLite 介绍SQLite 一个非常流行的嵌入式数据库,它支持SQL 语言,并且只利用很少的内存就有很好的性能。

由于JDBC 不适合手机这种内存受限设备,所以Android 开发人员需要学习新的API 来使用SQLite。

此外它还是开源的,任何人都可以使用它。

许多开源项目((Mozilla, PHP, Python)都使用了SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。

SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite 的内核变得更加方便。

图 1. SQLite 内部架构SQLite 基本上符合SQL-92 标准,和其他的主要SQL 数据库没什么区别。

它的优点就是高效,Android 运行时环境包含了完整的SQLite。

SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。

当某个值插入数据库时,SQLite 将检查它的类型。

如果该类型与关联的列不匹配,则SQLite 会尝试将该值转换成该列的类型。

如果不能转换,则该值将作为其本身具有的类型存储。

比如可以把一个字符串(String)放入__ 列。

SQLite 称这为“弱类型”(manifest typing.)。

android sqlite数据库 原理 -回复

android sqlite数据库 原理 -回复

android sqlite数据库原理-回复Android SQLite数据库原理SQLite是一种轻量级的关系型数据库,广泛应用于移动平台上,特别是Android应用程序中。

SQLite在安卓系统上的使用是基于C/C++库,提供了一套接口供开发者使用。

在本文中,我们将以Android SQLite数据库原理为主题,详细介绍其背后的原理和相关操作。

一、SQLite数据库概述SQLite是一种嵌入式数据库,它以库的形式嵌入到应用程序中,与其他大型数据库不同,它没有独立的服务进程,也不需要独立的服务器。

SQLite 的数据库文件是存储在应用程序的私有存储空间中,可以通过一系列API 进行操作。

SQLite支持大部分的SQL标准,并且具有ACID(原子性、一致性、隔离性和持久性)特性。

二、SQLite数据库文件结构1. SQLite数据库文件的后缀名为.db,它可能由多个页面组成,每个页面的大小通常为4KB。

一个页面可以存储一条或多条数据记录。

2. SQLite数据库由多个表组成,每个表由多个列和多个行组成。

表的列定义了每个数据记录中可以保存的数据类型和数值的约束。

3. SQLite数据库还包括索引,索引可以加速数据的检索。

在SQLite中,每个表最多只能有一个主索引(Primary Index),也可以有多个次索引(Secondary Index)。

三、SQLite数据库数据类型SQLite支持多种数据类型,常见的有:1. INTEGER:整型数据。

2. TEXT:以UTF-8编码存储的文本数据。

3. REAL:浮点型数据。

4. BLOB:二进制大型对象,可以用来存储图片、音频等二进制数据。

5. NULL:空值。

当我们在创建表时,需要明确每个列的数据类型。

四、SQLite数据库操作1. 数据库的创建和打开在Android中,我们可以使用SQLiteOpenHelper类来创建和打开数据库。

它提供了两种方法:onCreate()和onUpgrade()。

Android中数据存储——采用SQLite存储数据及在SDCard中创建数据库

Android中数据存储——采用SQLite存储数据及在SDCard中创建数据库

Android中数据存储——采用SQLite存储数据及在SDCard中创建数据库SQLite数据库简单的认识SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC 接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

SQLite第一个Alpha诞生于2000年5月. 至今已经有10个年头,SQLite 也迎来了一个版本SQLite 3已经发布。

SQLite特性下面是访问SQLite官方网站: http://www.sqlite. org/ 时第一眼看到关于SQLite的特性.1. ACID事务2. 零配置–无需安装和管理配置3. 储存在单一磁盘文件中的一个完整的数据库4. 数据库文件可以在不同字节顺序的机器间自由的共享5. 支持数据库大小至2TB6. 足够小, 大致3万行C代码, 250K7. 比一些流行的数据库在大部分普通数据库操作要快8. 简单, 轻松的API9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定10. 良好注释的源代码, 并且有着90%以上的测试覆盖率11. 独立: 没有额外依赖12. Source完全的Open, 你可以用于任何用途, 包括出售它13. 支持多种开发语言,C, PHP, Perl, Java, ASP .NET,Python下面以一个完整的Demo例子来展示对SQLite数据库操作,包括对数据库表的增、删、改、查等基本操作。

下面的一个截图是该演示Demo的项目框架图:通过上面的截图可以看到该项目src目录下包含两个类:MainActivity.java 和MySQLiteOpenHelper.java。

庖丁解牛Android中的SQLite之Sqlite中的数据类型

庖丁解牛Android中的SQLite之Sqlite中的数据类型

庖丁解牛Android中的SQLite之Sqlite中的数据类型大多数数据库管理系统使用的是静态类型系统,也就是说,数据库中每一个数据以及表中每一列都有它固定的数据类型。

Sqlite使用了动态类型系统,那sqlite的数据类型系统有什么特性呢?如果感兴趣的话,继续往下阅读吧。

一、Sqlite中的数据-存储类型存入sqlite中的数据都有一个存储类型,数据的存储类型有五种:•NULL:表示数据为null的存储类型。

•INTEGER:表示整型数据类型•REAL:表示浮点数据类型•TEXT:表示字符串数据类型•BLOB:二进制数据类型每当一个数据插入到sqlite中的表中时,它都会被赋予一个存储类型。

可以将这个存储类型看做是数据的一个属性。

那么问题来了,存储类型由什么决定呢?应该是(我的推断,不一定正确),数据库管理系统,也就是sqlite,根据数据本身的类型来决定其存储类型,比如我们向数据库中插入一个int型的数据,那么sqlite会赋予这个数据INTEGER的存储类别。

为什么我会这么推断呢?在google官方封装的java接口中,我们都是通过ContentValues这个类来插入数据的,在这个类中put方法有多个重载:public void put(String key, String value)public void put(String key, Byte value)public void put(String key, Long value)public void put(String key, Float value)public void put(String key, Double value)public void put(String key, Boolean value)public void put(String key, byte[] value)这里给了一丢丢提示,sqlite可能会根据传入的数据的不同类型,赋予其不同的存储类型。

Android数据存储之SQLite

Android数据存储之SQLite

1.Android中通过SQLite数据库引擎来实现结构化数据存储。

SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备,提供的是一种高效的数据库引擎。

2.Android提供了创建和使用SQLite数据库的API。

SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类提供更简洁的功能。

3. SQLiteOpenHelper是SQliteDatabase的一个帮助类,用来管理数据库的创建和版本更新。

一般用法是定义一个类继承之,并实现两个抽象方法onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)类创建和跟新数据库。

Android中操作数据库首先要通过一个类:android.database.sqlite.SQLiteOpenHelper。

它封装了如何打开一个数据库,其中当然也包含如果数据库不存在就创建这样的逻辑。

看一个例子:pubilc class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "com.roiding.simple.note";private static final int DATABASE_VERSION = 1;private static final String NOTES_TABLE_NAME = "notes";DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + NOTES_TABLE_NAME+ " (id integer primary key autoincrement, name text);");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS notes");onCreate(db);}}这里面,如下的语句需要解释:super(context, DATABASE_NAME, null, DATABASE_VERSION)数据库连接的初始化,中间的那个null,是一个CursorFactory参数,没有仔细研究这个参数,暂时置空吧。

android sqlite的底层原理

android sqlite的底层原理

android sqlite的底层原理SQLite是一款轻型的关系型数据库,广泛应用于Android平台上。

在Android系统中,SQLite作为底层数据库,为各种应用提供了数据存储和管理功能。

本文将详细介绍Android SQLite的底层原理,包括其设计理念、数据存储方式、事务处理等方面。

一、SQLite概述SQLite是一款开源的嵌入式数据库,其设计初衷是为了在本地设备上提供轻量级、高效、可靠的数据存储解决方案。

它支持标准的SQL 语法,具有小巧、快速、轻便的特点,适用于各种移动设备和嵌入式设备上。

Android系统采用了SQLite作为底层数据库,其设计理念主要表现在以下几个方面:1. 高效性:SQLite采用高效的索引和查询优化技术,能够快速处理数据查询操作。

在Android系统中,SQLite通过与操作系统的紧密结合,实现了高效的内存和磁盘利用效率。

2. 跨平台性:SQLite是一个跨平台的数据库,支持多种操作系统,包括Android、iOS、Windows等。

在Android系统中,SQLite与系统框架紧密结合,提供了统一的数据库接口,方便开发者使用。

3. 安全性:SQLite采用严格的访问控制和数据加密技术,确保数据的安全性和隐私性。

在Android系统中,SQLite通过与系统安全机制的结合,实现了对数据的严格保护。

Android SQLite提供了多种数据存储方式,包括文件存储、数据库存储、SharedPreferences存储等。

其中,文件存储和数据库存储是常用的方式。

1. 文件存储:文件存储是将数据以文件的形式存储在设备上,适用于存储少量、临时性的数据。

Android SQLite通过文件系统将数据存储在设备的文件系统中,实现了数据的安全性和可靠性。

2. 数据库存储:数据库存储是将数据以表格的形式存储在数据库中,适用于存储大量、长期性的数据。

Android SQLite通过SQLite引擎对数据进行管理,实现了高效的数据查询和操作。

Android数据存储 SQLite数据库存储

Android数据存储 SQLite数据库存储

示例代码如下:在对数据库中的表进行相关操作时,可以使用非查询的execSQL(String sql)来执行。

示例代码如下:以下示例代码详细给出一封装好的数据库操作类:public class MyDbHelper {public static final String KEY_TITLE = "title"; //数据表字段public static final String KEY_BODY = "body"; //数据表字段public static final String KEY_ROWID = "_id"; //数据表字段private DatabaseHelper mDbHelper; //SQLiteOpenHelper实例对象private SQLiteDatabase mDb; //数据库实例对象//数据表创建语句private static final String DATABASE_CREATE = "create table notes (_id integer prima ry key autoincrement, "+ "title text not null, body text not null);";private static final String DATABASE_NAME = "data"; //数据库名private static final String DATABASE_TABLE = "notes"; //数据库表名private static final int DATABASE_VERSION = 2; //数据库版本号private final Context mCtx; //上下文实例private static class DatabaseHelper extends SQLiteOpenHelper { //数据库辅助类DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(DATABASE_CREATE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS notes");/*** Constructor - takes the context to allow the database to be opened/created** @param ctx the Context within which to work*/public MyDbHelper(Context ctx) {this.mCtx = ctx;}/*** Open the notes database. If it cannot be opened, try to create a new instance of th e database.* If it cannot be created, throw an exception to signal the failure** @return this (self reference, allowing this to be chained in an initialization cal l)* @throws SQLException if the database could be neither opened or created*/public MyDbHelper open() throws SQLException {mDbHelper = new DatabaseHelper(mCtx);mDb = mDbHelper.getWritableDatabase();return this;}public void close() {mDbHelper.close();}/*** Create a new note using the title and body provided. If the note is successfully cr eated* return the new rowId for that note, otherwise return a -1 to indicate failure.** @param title the title of the note* @param body the body of the note* @return rowId or -1 if failed*/public long createNote(String title, String body) {ContentValues initialValues = new ContentValues();initialValues.put(KEY_TITLE, title);initialValues.put(KEY_BODY, body);return mDb.insert(DATABASE_TABLE, null, initialValues);}/*** Delete the note with the given rowId** @param rowId id of note to delete* @return true if deleted, false otherwise*/public boolean deleteNote(long rowId) {return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;}/*** Return a Cursor over the list of all notes in the database** @return Cursor over all notes*/public Cursor fetchAllNotes() {return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,KEY_BODY}, n ull, null, null, null, null);}/*** Return a Cursor positioned at the note that matches the given rowId** @param rowId id of note to retrieve* @return Cursor positioned to matching note, if found* @throws SQLException if note could not be found/retrieved*/public Cursor fetchNote(long rowId) throws SQLException {Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_TITL E,KEY_BODY}, KEY_ROWID + "=" + rowId, null, null, null, null, null);if (mCursor != null) {mCursor.moveToFirst();}return mCursor;}/*** Update the note using the details provided. The note to be updated is specified us ing the rowId,*and it is altered to use the title and body values passed in** @param rowId id of note to update* @param title value to set note title to* @param body value to set note body to* @return true if the note was successfully updated, false otherwise*/public boolean updateNote(long rowId, String title, String body) {ContentValues args = new ContentValues();args.put(KEY_TITLE, title);args.put(KEY_BODY, body);return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;}}。

androidsqlite数据库知识点

androidsqlite数据库知识点

androidsqlite数据库知识点Android SQLite 数据库知识点SQLite是一种轻量级的嵌入式关系型数据库,并且在Android开发中被广泛使用。

它提供了一种简单、高效的方法来存储和检索应用程序的数据。

本文将逐步介绍Android中使用SQLite数据库的相关知识点。

第一步:引入SQLite数据库在Android应用程序中使用SQLite数据库需要引入相应的库文件。

在应用程序的build.gradle文件中,添加如下依赖项:groovydependencies {implementation 'androidx.sqlite:sqlite:2.2.0'}这将使应用程序能够使用AndroidX版本的SQLite数据库库。

第二步:创建数据库和表要使用SQLite数据库,需要首先创建一个数据库,并在其中创建表。

在Android中,可以通过创建一个继承自SQLiteOpenHelper的子类来完成这个任务。

SQLiteOpenHelper提供了创建、升级和打开数据库的方法。

首先,创建一个继承自SQLiteOpenHelper的子类:javapublic class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db";private static final int DATABASE_VERSION = 1;public DatabaseHelper(Context context) {super(context, DATABASE_NAME, null,DATABASE_VERSION);}Overridepublic void onCreate(SQLiteDatabase db) {String createTableQuery = "CREATE TABLE users (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";db.execSQL(createTableQuery);}Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {在数据库版本更新时执行的操作}}在创建DatabaseHelper类后,可以在应用程序中的任何位置使用它来创建数据库和表:javaDatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase();第三步:插入数据要将数据插入到SQLite数据库表中,可以使用ContentValues类。

Android 深入了解SQLite存储方式(三)

Android 深入了解SQLite存储方式(三)

Android 深入了解SQLite存储方式(三)如果我们使用默认系统路径存储数据库文件:第一步:新建一个类继承SQLiteOpenHelper;写一个构造,重写两个函数!第二步:在新建的类中的onCreate(SQLiteDatabase db) 方法中创建一个表;第三步:在进行删除数据、添加数据等操作的之前我们要得到数据库读写句柄得到一个数据库实例;注意:继承写这个辅助类,是为了在我们没有数据库的时候自动为我们生成一个数据库,并且生成数据库文件,这里也同时创建了一张表,因为我们在onCreate里是在数据库中创建一张表的操作;这里还要注意在我们new 这个我们这个MySQLiteOpenHelper 类实例对象的时候并没有创建数据库哟~!而是在我们调用(备注3)MySQLiteOpenHelper ..getWritableDatabase() 这个方法得到数据库读写句柄的时候,Android 会分析是否已经有了数据库,如果没有会默认为我们创建一个数据库并且在系统路径data-data-com.himi-databases下生成himi.db 文件!如果我们需要把数据库文件存储到SD卡中:第一步:确认模拟器存在SD卡,关于SD卡的两种创建方法见我的博文:【Android 2D游戏开发之十】第二步:(备注1)先创建SD卡目录和路径已经我们的数据库文件!这里不像上面默认路径中的那样,如果没有数据库会默认系统路径生成一个数据库和一个数据库文件!我们必须手动创建数据库文件!第三步:在进行删除数据、添加数据等操作的之前我们要得到数据库读写句柄得到一个数据库实例;(备注2)此时的创建也不是像系统默认创建,而是我们通过打开第一步创建好的文件得到数据库实例。

这里仅仅是创建一个数据库!!!!第四步:在进行删除数据、添加数据等操作的之前我们还要创建一个表!第五步:在配置文件AndroidMainfest.xml 声明写入SD卡的权限。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一种方式:扩展SQLiteOpenHelper类提供数据访问接口
1.首先创建一个类继承自SQLiteOpenHelper,重写里面的 onCreate()、onUpgrade()以及对应的构造方法。

public SqliterOpener(Context context, String name, CursorFactory factory,
int version) { super (context, name, factory, version);}
参数1:上下文环境(需要作为参数传进来) 参数2;创建的数据库名
参数3:一般写为null 参数4:数据库版本号
public void onCreate(SQLiteDatabase db) {//创建数据表
db.execSQL("create table tb_student(_id integer primary key autoincrement ,name
varchar(20),age varchar(8))"); }
仅仅在数据库创建的时候执行一次onCreate()方法
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
当需要升级数据库版本的时候再重写里面的内容
2.其次创建一个类比如StudentDao声明属性SQLiteOpenHelper(数据库操作助手)和SQLiteDatabase(数据库操作员)
(1) 创建对应的构造方法,实例化SQLiteOpenHelper(数据库操作助手)
public userinfoDao(Context context) {
sq = new SQLiteOpenHelper(context); }
(2)创建对数据库操作的增删改查方法
在方法内部首先实例化SQLiteDatabase(数据库操作员)对象获取对数据库操作的读或者写的权限,其次调
用数据库操作员的增删改查方法对数据库进行操作
第二种方式:扩展ContentProvider来提供数据库访问接口
App1
1.第一步同第一种方式
2.其次创建一个类继承自ContentProvider并实现其中的6个方法
onCreate() 以及insert(Uri, ContentValues) 、delete(Uri, String,
String[])、update(Uri, ContentValues, String, String[])
、query(Uri, String[], String, String[], String) 、getType(Uri)
3.在此类中
声明属性SQLiteOpenHelper(数据库操作助手)
SQLiteDatabase(数据库操作员)
private static final String
AUTHORITY="com.android.provides.myprovides";此为第一层过滤
private static UriMatcher um=new UriMatcher(UriMatcher.NO_MATCH );
static{
um.addURI( AUTHORITY, "src" ,1);
um.addURI( AUTHORITY, "src/query" ,2);
}//此为第二层过滤条件,不需要在AndroidManifest.xml中注册
在 AndroidManifest.xml application中注册这个第一层过滤条件
<provider android:name="com.android.contentprovider.dbcontentprovider "
android:authorities="com.android.provides.myprovides"
></provider>
第二层的过滤条件首先用在重写的后五个方法中,比如
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, S
tring sortOrder) {
// TODO Auto-generated method stub
sd= sq.getReadableDatabase();
if(um .match(uri)==2){
returnsd .query("tb_student" , null, null, null, null , null, null);}
else{
throw new IllegalArgumentException("出现错误");
}
}
4.在oncreate()方法中创建SQLiteOpenHelper(数据库操作助手)对象
sq =new SqliterOpener(getContext()); 返回值为true
App2
5. App2中通过context.getContentResolver()获取ContentResolver对象,然后由该对象调用一系列ContentProvider对象的方法去访问数据库
如:ContentResolver cr = getContentResolver();
Cursor c=cr.query(Uri.parse(
//content://第一层过滤条件/第二层过滤条件来进行匹配
"content://com.android.provides.myprovides/src/query" ),
null ,null, null, null);
list= new ArrayList<UserBean>();
while(c.moveToNext()){
int _id=c.getInt(c.getColumnIndex("_id" ));
String name=c.getString(c.getColumnIndex("name" ));
String age=c.getString(c.getColumnIndex("age" ));
ub= new UserBean(_id, name, age);
list.add( ub);
Intent intent=new Intent( this,OtherActivity.class);
intent.putExtra( "list", list );
startActivity(intent);
特别注意:这里使用了Android中Intent传递对象的两种方法(Serializable,Parcelable)。

相关文档
最新文档