《AndroidOPhone 开发完全讲义》连载(10):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个参数)。
sqlite数据库教材
sqlite数据库教材目录1. 引言1.1 背景和意义1.2 结构概述1.3 目的2. SQLite数据库基础知识2.1 概述2.2 数据库管理系统简介2.3 SQLite的特点与优势3. SQLite数据库设计与创建3.1 数据建模与规范化3.2 创建数据库与数据表3.3 约束条件与关系定义4. 数据的增删改查操作4.1 插入数据4.2 更新数据4.3 删除数据4.4 查询数据5.SQL高级功能与优化技巧5-1 SQL函数5-2索引,视图,事务等引言1.1 背景和意义数据库是软件开发过程中必不可少的一环,用于存储和管理数据。
随着互联网和移动设备的快速发展,数据的规模和复杂性也呈现出爆炸式增长的趋势。
因此,如何高效、可靠地处理大量数据成为了一个重要问题。
SQLite数据库作为一种轻量级、可嵌入式的关系型数据库管理系统(RDBMS),广泛应用于各种领域,包括移动应用程序、桌面应用程序以及嵌入式设备等。
其简单易用、稳定高效的特点使得SQLite成为了许多开发者首选的数据库工具。
本教材旨在介绍SQLite数据库的基础知识、设计与创建方法以及常见操作技巧,帮助读者全面理解和掌握SQLite数据库,从而能够在实际项目中灵活运用并优化其性能。
1.2 结构概述本教材共分为五个章节,内容涵盖了SQLite数据库基础知识、设计与创建、数据的增删改查操作以及SQL高级功能与优化技巧。
具体而言,在第二章中我们将对SQLite数据库进行概述,并介绍数据库管理系统的基本概念。
接着,在第三章中,我们将学习数据建模与规范化的基本原理,以及如何使用SQLite创建数据库和数据表,并定义各种约束条件和关系。
在第四章中,我们将重点介绍SQLite数据库中常用的增加、删除、修改和查询数据的操作方法,并给出一些实例进行实际演示。
最后,在第五章中,我们将深入讨论SQL高级功能与优化技巧,包括SQL函数的应用、索引的使用以及视图和事务等高级特性。
《Android应用开发》课件——第5章 数据存储
File SDPath = Environment.getExternalStorageDirectory();
File file = new File(SDPath, "data.txt");获取SD卡目录
String data = "HelloWorld";
FileOutputStream fos = new FileOutputStream(file);
注意:Android系统有一套自己的安全模型,默认情况下任何应用创 建的文件都是私有的,其他程序无法访问。
✎
5.2.1 将数据存入到文件中
内部存储
String fileName = "data.txt";
// 文件名称
String content = "helloworld";
// 保存数据
FileOutputStream fos = openFileOutput(fileName, MODE_PRIVATE);
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
动态申请权限的方法
外部存储 ✓ 存储位置
将数据以文件的形式存储到外部设备上。
✓ 存储位置
mnt/sdcard/目录下。
✓ 其它应用操作该文件时
不用设置权限,会被其它应用共享
✓ 删除文件
该文件可在本应用外删除,使用前需要 确认外部设备是否可用
✓ 删除文件
直接使用FileOutputStream和 FileInputStream操作对象
安卓系统android_黎活明_老师+开发培训课件(10)
—高级软件人才实作培训专家 !
Activity
5
ห้องสมุดไป่ตู้ Activity
A visual user interface 通过view管理UI 每一个有用户界面的应用至少包含一个 activity 一个应用可以有多个activity,其中一个作为 main activity用于启动显示 Activity通过startActivity或 startActivityForResult启动另外的activity
/ 安卓手机论坛
北京传智播客教育
—高级软件人才实作培训专家 ! 使用SQLiteDatabase操作SQLite数据库
query()方法实际上是把select语句拆分成了若干个组成部分,然后作为方法的输入参数:
SQLiteDatabase db = databaseHelper.getWritableDatabase(); Cursor cursor = db.query("person", new String[]{"personid,name,age"}, "name like ?", new String[]{"%传智%"}, null, null, "personid desc", "1,2"); while (cursor.moveToNext()) { int personid = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始 String name = cursor.getString(1);//获取第二列的值 int age = cursor.getInt(2);//获取第三列的值 } cursor.close(); db.close(); 上面代码用于从person表中查找name字段含有“传智”的记录,匹配的记录按personid降序排序,对排序后的结果略过第一 条记录,只获取2条记录。 query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)方法各参数的含义: table:表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。 columns:要查询出来的列名。相当于select语句select关键字后面的部分。 selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?” selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。 groupBy:相当于select语句group by关键字后面的部分 having:相当于select语句having关键字后面的部分 orderBy:相当于select语句order by关键字后面的部分,如:personid desc, age asc; limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。
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 数据库所需的知识和技术,并为未来在移动应用开发中构建更稳定、高效、可靠的数据库功能提供指导。
最新Android开发中使用SQLite数据库
A n d r o i d开发中使用S Q L i t e数据库Android 开发中使用 SQLite 数据库简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。
Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
对数熟悉 SQL 的开发人员来时,使用 SQLite 相当简单。
可以,由于 JDBC 不适合手机这种内存受限设备,所以 Android 开发人员需要学习新的 API 来使用 SQLite。
本文主要讲解 SQLite 在 Android 环境中的基本使用。
SQLite 介绍SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。
此外它还是开源的,任何人都可以使用它。
许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。
SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
图 1. SQLite 内部结构SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。
它的优点就是高效,Android 运行时环境包含了完整的 SQLite。
SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。
当某个值插入数据库时,SQLite 将检查它的类型。
如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。
如果不能转换,则该值将作为其本身具有的类型存储。
比如可以把一个字符串(String)放入 INTEGER 列。
SQLite 称这为“弱类型”(manifest typing.)。
Android数据库 之 SQLite数据库
Android数据库之 SQLite数据库android数据库之sqlite数据库delphixe5教程-firedac下的sqlite使用-前言介绍本文章了解了firedac下的sqlite采用,转回至万一老师的博客.delphixe5并入了firedac,第一印象非常好,恐怕dbexpress等等都要靠边站了.使我最高兴地就是firedac对sqlite的积极支持!杰出的sqlite早就存有很多delphi的外包装有静态引用obj的,有动态链接dll的,还有把dll嵌入资源文件的,甚至还有重写的(刚刚见过一套用c#重写的源码).delphi官方首次导入sqlite,必须就是在xe3(提供更多了system.sqlite单元),这似的只是为了积极支持dbx,也须要sqlite.dll积极支持.现在好了,有了firedac,有了firedac对sqlite更完善的支持(它没有使用system.sqlite.pas),特别须要表明的就是,在windwos平台下预设采用了sqlite3_x86.obj或sqlite3_x64.obj(firedac.phys.sqlitecli.pas),而非dll,再加之sqlite本来就不须要其他部署,太便利了.从此,不管是写本地程序、移动程序(sqlite是andriod的系统数据库)、网络程序我都将使用sqlite,恐怕在须要内存表中、ini文件、甚至就是定义某种文件格式时,我都会想起它.所以,一定必须把它研习精学皱!估计学完它至少会记下20篇博客,如果你也想和我一起学习,快安装xe6吧(xe5我没装过,lsuper搞的embarcadero.delphi.xe6.lite.v9.x应该更方便安装,这里一并谢过!).期望尽快修完这个,接下来还要学学intraweb(它必须就是明朗了)和移动研发,说道至移动研发向大家求救下\升级andriod系统的方法\我几年前出售的三星galaxy小平板手机(港行),系统就是andriod2.1,刚好够不着;谁搬过,拜托教导我之下;如果存有不升级也能够用作测试的方法则更好.安装xe6后,先用firedacexplorer浏览下官方提供的fddemo.sdb吧(实际路径:c:\\users\\public\\documents\\embarcadero\\studio\\14.0\\samples\\data\\fdd emo.sdb):delphixe5教程-firedac下的sqlite采用-第一个例子介绍本文章了解了firedac下的sqlite采用-第一个例子,转回至万一老师的博客.为了方便测试,我把官方提供的c:\\users\\public\\documents\\embarcadero\\studio\\14.0\\samples\\data\\fddemo .sdb激活了一份至c:\\temp\\fddemo.sdb.{新建一个vclformsapplication,然后添加如下控件(建议按ctrl+.后用键盘输入添加):}tfdphyssqlitedriverl动自动连接;不同数据库各对应一个:tfdphys****driverlinktfdguixwaitcursor//用于自动管理gui程序的在console和fmx下也都有类似对应的东西tfdconnection//数据连接tfdquerytdatasource//数据源tdbgrid//数据显示//usesfiredac.phys.sqlite之后,tfdphyssqlitedriverlink//usesfiredac.vclui.wait之后,可不用添加tfdguixwaitcursor{简单几行代码fddemo.sdb中的orders表中的数据}proceduretform1.formcreate(sender:tobject);beginfdconnection1.drivername:='sqlite';fdconnection1.params.add('database=c:\\temp\\fddemo.sdb');fdquery1.connection: =fdconnection1;datasource1.dataset:=fdquery1;dbgrid1.datasource:=datasource1;fdquery1.sql.text:='select*fromorders';//sqlite非常好地支持了sql92标准,目前被dbgrid1.align:=alclient;end;效果图:{稍稍变通一下代码}proceduretform1.formcreate(sender:tobject);begin//fdconnection1.connectionstring:='driverid=sqlite;database=c:\\temp\\fddemo.s db';//可以替代下面两行fdconnection1.params.add('driverid=sqlite');//同fdconnection1.drivername:='sqlite';fdconnection1.params.add('database=c:\\temp \\fddemo.sdb');fdquery1.connection:=fdconnection1;datasource1.dataset:=fdquery 1;dbgrid1.datasource:=datasource1;fdquery1.sql.text:='select*fromorders';fdconnection1.connected:=true;fdquery1. active:=true;dbgrid1.align:=alclient;end;{再变通一下}proceduretform1.formcreate(sender:tobject);beginfdquery1.connection:=fdconnection1;datasource1.dataset:=fdquery1;dbgrid1.datas ource:=datasource1;fdconnection1.open('driverid=sqlite;database=c:\\temp\\fddemo.sdb');fdquery1.o pen('select*fromorders');dbgrid1.align:=alclient;end;delphixe5教程-firedac下的sqlite采用-以获取数据库的基本信息介绍本文章了解了firedac下的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详解
ANDROID开发之SQLite详解SQLite简介Google为Andriod的较⼤的数据处理提供了SQLite,他在数据存储、管理、维护等各⽅⾯都相当出⾊,功能也⾮常的强⼤。
SQLite具备下列特点:1.轻量级使⽤ SQLite 只需要带⼀个动态库,就可以享受它的全部功能,⽽且那个动态库的尺⼨想当⼩。
2.独⽴性SQLite 数据库的核⼼引擎不需要依赖第三⽅软件,也不需要所谓的“安装”。
3.隔离性SQLite 数据库中所有的信息(⽐如表、视图、触发器等)都包含在⼀个⽂件夹内,⽅便管理和维护。
4.跨平台SQLite ⽬前⽀持⼤部分操作系统,不⾄电脑操作系统更在众多的⼿机系统也是能够运⾏,⽐如:Android。
5.多语⾔接⼝SQLite 数据库⽀持多语⾔编程接⼝。
6.安全性SQLite 数据库通过数据库级上的独占性和共享锁来实现独⽴事务处理。
这意味着多个进程可以在同⼀时间从同⼀数据库读取数据,但只能有⼀个可以写⼊数据。
Android中的SQLite使⽤⾸先创建数据库类public class DatabaseHelper extends SQLiteOpenHelper {private static final String DB_NAME = "mydata.db"; //数据库名称private static final int version = 1; //数据库版本public DatabaseHelper(Context context) {super(context, DB_NAME, null, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}SQLiteOpenHelper类介绍SQLiteOpenHelper是SQLiteDatabase的⼀个帮助类,⽤来管理数据库的创建和版本的更新。
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应用详解
SQLite是D。
Richard Hipp用C语言编写的开源嵌入式数据库引擎。
它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。
SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。
SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),是调试、修改和扩展SQLite的内核变得更加方便。
所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。
SQLite的整体结构图如下:值得一提的是,袖珍型的SQLite竟然可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据都是以B—Tree的数据结构形式存储在磁盘上.在事务处理方面,SQLite通过数据库级上的独占性和共享锁来实现独立事务处理。
这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。
在某个进程或线程想数据库执行写操作之前,必须获得独占锁。
在获得独占锁之后,其他的读或写操作将不会再发生。
SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。
但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个“datatype missmatch”的错误。
概括来讲,SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,分别代表空值、整型值、浮点值、字符串文本、二进制对象。
下面,我们就来亲自操作一下SQLite数据库。
在操作之前,朋友们要先下载SQLite数据库,官方的下载页面是http:///download。
html,我是在Windows下试验,所以我选择了Precompiled Binaries For Windows下面的sqlite-shell—win32—x86和sqlite-analyzer-win32-x86的zip包,前者是SQLite数据库引擎,后者是SQLite数据库分析器,主要用于分析数据库的状态等信息,大家也可以根据自己的情况去下载。
android原生数据库sqlite用法
android原生数据库sqlite用法Android原生数据库SQLite用法SQLite是Android系统中的默认数据库管理系统,可用于存储结构化数据。
它是一个轻量级的嵌入式关系数据库管理系统,可以在内存中创建、读取和编辑数据库,适合应用中小型数据存储,同时Android 系统提供了很多支持SQLite的API接口。
1. 创建数据库和表格使用SQLite API可以创建数据库和表格。
创建数据库需要调用SQLiteOpenHelper类并实现onCreate()和onUpgrade()方法,并传递必要的参数。
onCreate()方法用于创建数据库和表格,onUpgrade()方法用于更新数据库和表格。
示例代码:public class DatabaseHelper extends SQLiteOpenHelper {//定义数据库相关变量private static final int DATABASE_VERSION = 1;private static final String DATABASE_NAME = "MyDatabase";//定义表格名称和字段名称private static final String TABLE_NAME_USER = "User"; private static final String COLUMN_NAME_ID = "id";private static final String COLUMN_NAME_USERNAME = "username";private static final String COLUMN_NAME_PASSWORD = "password";//定义创建表格的SQL代码private static final String SQL_CREATE_USER ="CREATE TABLE " + TABLE_NAME_USER + " (" +COLUMN_NAME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +COLUMN_NAME_USERNAME + " TEXT," +COLUMN_NAME_PASSWORD + " TEXT)";public DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(SQL_CREATE_USER);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//处理表格升级逻辑}}2. 插入和查询数据使用SQLite API可以插入和查询数据。
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类。
SQLite数据库_深入了解android
第三节 创建数据库和表
创建一个数据库 try { //方法一: SQLiteDatabase.openDatabase("data/data/com.a ndroid.sqllite/temp.db",null, SQLiteDatabase.OPEN_READONLY|SQLiteDataba se.CREATE_IF_NECESSARY); } catch (Exception e) { System.out.println(e.getMessage()); }
Boolean moveToLast(): 将记录指针移动到最后一 行,如果移动成功返回true。 Boolean moveToNext(): 将记录指针移动到下一行 ,如果移动成功返回true。 Boolean moveToPosition(int position):将记录指 针自动到指定行,如果移动成功则返回true。 Boolean moveToPrevious():将记录指针移动到上一 行,如果移动成功则返回true。 一旦将记录指针移动到指定行之后,接下来就可以调 用Cursor的getXxx()ursorFactory
该参数是一个用于返回 Cursor的工厂,如果指定参数 为NULL,则意味着使用默认的工厂。 创建一个表 db = SQLiteDatabase.openOrCreateDatabase(file, null); String sql = "create table user_inf(user_id integer primary key," +" user_name varchar(255)," +" user_pass varchar(255))"; db.execSQL(sql);
金星-手机平台应用开发 第五章 sqlite数据库
ArrayAdapter
• ArrayAdapter也继承自 BaseAdapter,与 SimpleAdapter相同。 ArrayAdapter通常用于适 配TextView控件,例如 Android系统中的设置菜 单(Setting)。
5.3 ListView控件
• 5.3.3 案例——Android应用市场
• 该类是一个数据库访 问类,封装了一系列 数据库操作的API, 可以对数据进行增删 改查操作。
• 是一个游标接口,在 数据库操作中作为返 回值,相当于结果集 ResultSet。
5.2 SQLite数据库的使用
• 5.2.2 数据库的常用操作
– Android SDK提供的一系列操作SQLite数据库的API。SQLiteDatabase 就是其中的一个,它提供了一些列用于操作数据库的方法。
– 前面介绍了ListView和几种常见的数据适配器,接下来通过一个案例 Android应用市场来演示如何使用ListView以及如何对其进行数据适配。
5.3 ListView控件
• 多学一招:如何使用其他Adapter适配数据
– 前面的案例只运用了BaseAdpater适配ListView,使用BaseAdapter适 配数据需要重写其四个方法。而SimpleAdapter和ArrayAdapter只需一 行代码即可适配数据。
BaseAdapter
• 即基本的适配器。它实际 上就是一个抽象类,该类 拥有四个抽象方法。在 Android开发中,就是根 据这几个抽象方法来对 ListView进行数据适配的
SimpleAdapter
• SimpleAdapter继承自 BaseAdapter,实现了 BaseAdapter的四个抽象 方法,分别是getCount()、 getItem()、getItemId()、 getView()方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Android/OPhone 开发完全讲义》连载(10):Sqlite数据库
本文为原创,如需转载,请注明作者和出处,谢谢!
现在终于到讲解数据库的时间了。
数据库也是Android存储方案的核心。
在Android系统中使用了Sqlite数据库。
Sqlite是非常轻量的数据库。
从Sqlite的标志是一根羽毛就可以看出Sqlite的目标就是无论是过去、现在,还是将来,Sqlite都将以轻量级数据库的姿态出现。
Sqlite虽然轻量,但在执行某些简单的SQL语句时甚至比MySQL和Postgresql还快。
由于很多读者是第一次接触Sqlite数据库,因此,在介绍如何在Android中使用Sqlite之前,先在本节简单介绍一下如何在PC上建立Sqlite 数据库,以及Sqlite数据库的一些特殊方面(由于本书的目的不是介绍Sqlite数据库,因此,与其他数据库类似的部分(如insert、update等)本书将不再介绍。
没有掌握这些知识的读者可以参阅其他关于数据库方面的书籍。
6.4.1 Sqlite数据库管理工具
在学习一种新技术之前,首先要做的是在自己的计算机上安装可以操作这种技术的工具。
当然,这也非常符合一句成语:功欲善其事,必先利其器。
虽然使用好的工具并不能使自己更好地掌握这种技术,但却能使我们的工作效率大大提升。
言归正传,现在先看看官方为我们提供了什么工具来操作Sqlite数据库。
进入官方的下载页面,网址如下:
/download.html
在下载页面中找到Windows版的二进制下载包。
在作者写作本书时,Sqlite的最新版本是Sqlite3.6.2。
因此,要下载的文件是Sqlite-3_6_20.zip。
将这个zip文件解压,发现在解压目录中只有1个文件:sqlite3.exe。
对,这个文件就是操作Sqlite数据库的工具(是不是很轻量?连工具都只有一个)。
它是一个命令行程序,运行这个程序,进入操作界面,如图6.15所示。
在控制台中可以输入SQL语句或控制台命令。
所有的SQL语句后面必须以分号(;)结尾。
控制台命令必须以实心点(.)开头,例如,.help(显示帮助信息);.quit(退出控制台);.tables(显示当前数据库中所有表名)。
虽然可以在Sqlite的控制台中输入SQL语句来操作数据库,但输入大量的命令会使工作量大大增加。
因此,我们必须要使用所谓的“利器”来取代这个控制台程序。
由于Sqlite提供了各种类型的程序接口,因此,可以管理Sqlite数据库的工具非常多,下面是几个比较常用的Sqlite管理工具。
SQLite Database Browser
/projects/sqlitebrowser
SQLite Expert Professional
Sqlite Developer
sqliteSpy
/progDownload/SQLiteSpy-Download-107386.html
作者在写作本书时使用了SQLiteExpert Professional,这也是作者推荐使用的Sqlite管理工具。
该工具拥有大量的可视化功能,例如,建立数据库、建立表、SQL Builder等工具。
图6.16是SQLite ExpertProfessional的主界面。
6.4.2 创建数据库和表
使用SQLite控制台工具(sqlite3.exe)建立数据库非常简单,只需要输入如下的命令就可以建立或打开数据库。
sqlite3.exe test.db
如果数据库(test.db)存在,则打开该数据库,如果数据库不存在,则预建立test.db文件(这时并不生成test.db文件,直到在Sqlite控制台中执行与数据库组件(表、视图、触发器等)相关的命令或SQL语句才创建test.db文件。
如果想使用sqlite.exe命令同时建立数据库和表,可以先建立一个sql.script文件(也可以是其他文件名),并在其中输入如下的SQL语句:
create table table1 (
id integerprimary key,
age int,
name text
);
create table table2(
idinteger primary key,
type_idinteger,
name text
);
然后执行如下的命令,就会在建立test.db文件的同时,在该test.db文件中建立table1和table2两个表。
sqlite3.exe test.db < sql.script
在使用createtable语句创建表时还可以为每一个字段指定默认值,如下面的SQL语句所示:create table table1 (
id integerprimary key,
age int default 20,
name text
);
create table table2(
id integerprimary key,
type_idinteger,
name text default 'name1'
);
6.4.3 模糊查询
Sqlite的模糊查询与其他数据库类似,都使用了like关键字和%通配符。
不过Sqlite在处理中文时会遇到一些麻烦。
例如,使用下面的SQL语句向table2插入了一条记录。
insert into table2(id, type_id, name) values(1, 20,'手机操作系统');
在Sqlite控制台中使用如下的SQL查询是没有问题的。
select * from table2 where name =
'手机操作系统';
但如果使用下面的模糊查询语句,则无法查询到记录。
select * from table2 where name like
'手机%';
发生这种事情的原因是因为Sqlite控制台在保存中文时使用的编码格式是GB2312,而执行like操作时使用的是UTF-8。
读者可以使用如下的命令来查看Sqlite控制台当前的编码格式。
PRAGMA encoding;
为了可以使用like模糊查询中文,作者建议使用6.4.1节介绍的SQLite Expert Professional来执行insert、update等SQL语句来编辑数据。
在这个工具中会直接使用UTF-8来保存中文。
6.4.4 分页显示记录
分页是在Web应用中经常被提到的概念。
基本原理是从数据库中获得查询结果的部分数据,然后显示在页面中。
虽然本书并没有介绍Web程序的开发,但获得查询结果的部分数据仍然非常重要。
Sqlite和MySQL相同,都使用了limit关键字来限制select语句返回的记录数。
limit需要两个参数,第1个参数表示返回的子记录集在父记录集的开始位置(从0开始),第2个参数表示返回子记录集的记录数。
第2个参数为可选值,如果不指定这个参数,会获得从起始位置开始往后的所有记录。
例如,下面的select语句返回了table2表中从第11条记录开始的100条记录。
select * from table2 limit 10 100
6.4.5事务
如果一次执行多条修改记录(insert、update等)的SQL语句,那么当某一条SQL语句执行失败时,就需要取消其他SQL语句对记录的修改。
否则就会造成数据不一致的情况。
而事务是解决这个问题的最佳方法。
在Sqlite中可以使用BEGIN来开始一个事件,例如,下面的代码执行了两条SQL语句,如果第2条语句执行失败,那么第1条SQL语句执行的结果就会回滚,相当于没执行这条SQL语句。
BEGIN;
insert into table1(id, name) values(50,'Android');
insert into table2(id, name) values(1, '测试');
如果想显式地回滚记录的修改结果,可以使用ROLLBACK语句,代码如下:
BEGIN;
delete from table2;
ROLLBACK;
如果想显式地提交记录的修改结果,可以使用COMMIT语句,代码如下:
BEGIN;
delete from table2;
COMMIT;。