安卓小白开发之学习安卓的点点滴滴—数据库(3)

9 篇文章 0 订阅
4 篇文章 0 订阅

1, 真正的数据库储存——SQLite数据库

概述:这是安卓推出的,用于移动端的,轻量级数据库,用于处理那些数据量大,结构复杂的数据,它比一般的数据库要简单的多,甚至不需要设置账号和密码,并且运行速度非常快,占用资源也极少(通常几百k即可)

可以使用标准的SQL语句控制,还遵循了数据库的ACID事物,所以以前使用过数据库的盆友,基本上可以简略的扫过本文章。

 

首先这个SQL数据库在安卓的包中以SQLiteDatabase类封装。 

要使用这个类,需要用SQLiteOpenHelper抽象类封装(这是一个帮助类),其中要重写一些方法。

 

方法&属性介绍:

onCreate()方法:

定义类:SQLiteDatabase

特性:非静态方法,用于创建数据库

参数:SQLiteDatabase对象

返回值:无

 

onUpdate()方法:

定义类:SQLiteDatabase

特性:非静态方法,用于更新数据库

参数:SQLiteDatabase,数据库老的版本(int类型),新数据库类型

返回值:无

 

SQLiteDataBaseHelper的构造方法(参数较少的那个即可):

定义类:SQLiteDataBaseHelper

特性:用于进行数据库的一系列操作的前提

参数:Context,库名(数据库名String类型),返回自定义的Cursor(光标)<一般传入null即可>,int类型的当前数据库版本号。

返回值:无

 

getReadableDatabase()方法:

定义类:SQLiteDataBaseHelper

特性:非静态,用于创建或打开数据库,并返回一个可供读的操作的对象。

参数:无

返回值:SQLiteDataBase对象

 

getWritableDatabase()方法:

定义类:SQLiteDataBaseHelper

特性:非静态,用于创建或打开数据库,并返回一个可供写的操作的对象。

参数:无

返回值:SQLiteDataBase对象

 

注意:

1, SQLiteDatabase对象的创建,一般调用的是DataBaseHelper子类的构造方法,而并非直接调用SQLiteDataBase的构造方法,当系统查询无当前数据库名时,会在系统中创建相应的数据库。

2, SQLiteDataBase对象的升级,只要再次调用其构造方法,将最后一个参数传入比之前第一次调用的值大的一个数字即可,这样就可以调用onUpdate()方法。

3, 这里onUpdate()方法,和onCreate()方法的调用都是有条件的,不能直接调用。

 

数据库最重要的方法(CRDU,增删更查):

与SQL数据库不同,这里安卓有一系列的数据调用新方法,也可以直接用SQL数据库的习惯,调用。

 

 

Put()方法:

定义类:ContentValues

特性:非静态方法,用于构造ContentValues对象所携带的数据

参数:键值对,键为String类型,值无要求。

返回值:无

 

Clear()方法:

定义类:ContentValues

特性:非静态方法,用于清除ContentValues对象所携带的数据

 

Insert()方法:

定义类:SQLiteDatabase

特性:非静态方法,用于插入数据

参数:String类型的数据类别(自定义类别,如Book等),未指定添加数据的情况下给某些可为空白的列表自动赋值为NULL(一般只要传null,即可),ContentValues对象(用于一次性,将一类对象的所有参数传入)。

返回值:无

 

Update()方法:

定义类:SQLiteDatabase

特性:非静态方法,用于更新

参数:表名(String类型),ContentValues对象,三参、四参用于约束更新对象的行列中的数据。(也可理解为占位和值的关系)(如:“price=?”,3.88))(不指定则自动更新所有行)

返回值:无

 

delet()方法:

定义类:SQLiteDatabase

特性:非静态方法,用于删除

参数:表名(String类型),二参,三参与上述相类似也是回答:where,what两个问题的。(不指定则删除所有行)

返回值:无

 

query()方法

定义类:SQLiteDatabase

特性:非静态方法,用于查询数据,返回一个Cursor对象用于获取数据

参数(只介绍最简单的):表名,三参,四餐用于指定查询的行位置,和查询几行,如果不指定则查询所有,五参用于指定需要group by的列,不指定则不对其进行group by操作。

六参用于对group by之后的数据进行进一步过滤,不指定则不过滤,七参用于指定查询结果的排列方式,不指定则默认方式排列。

返回值:Cursor类型对象(光标)

 

Cursor是一个抽象类(在android.database中)其中包含了许多方法用于得到返回的数据

 

moveToFirst()方法:

定义类:Cursor

特性:非静态方法,用于将光标移动到第一个位置

参数:无

返回值:boolean类型,表示该操作是否实现

 

getClumIndex()方法:

定义类:Cursor

特性:非静态方法,用于读取相应键后面的值

参数:行的名称(之前存放时用的“键”)

返回值:int类型的值

 

getXXX()方法:

定义类:Cursor

特性:类似SharedPreferences中的方法,取出相应的数据类型。

参数:int类型的ClumIndex,参数的值(所要参数的值一般嵌套getClumIdex())

返回值:XXX数据类型

 

close()方法:

定义类:Cursor

特性:非静态方法,用于关闭光标读取的文件

参数:无

返回值:无

 

也可以通过SQL直接操作数据库:

 

通过execSQL()方法实现,这里属于SQL的知识,不过多涉及。

但必须有所了解,因为至少要使用这条语句先建立一个表格,才能使用上述方法进行增删改查。

 

 

查看数据库内容方法操作:

这里由于博主,用的是windows操作系统,暂且先介绍windows下数据库的查看方法。

此时该数据库,终于不能在FileExplorer视图下查看了。此时要用到的是SDK中的一个调试工具。

存放在platform-tools下,若想用命令提示符打开该工具,要将该工具的路径配置到环境变量中。

然后即可使用这款工具:adb shell

在命令提示符中写:adb shell即可打开


由于该软件由一位编安卓底层工程师设计,也就是基于Linux的,Linux中的代码习惯,在该软件中得以体现,例如:使用cd而非cd/d转到某某目录下。

转到data->data->包-project名->databases(提示:在不知道接下来目录是什么的时候,可以使用ls这个linux中常见的命令)


然后用sqlite3 <数据库名>打开数据库

.table 命令看到表格(其中android_metadata是自动生成的表格<一定存在>)

然后使用.schema可以看到建表语句(其中的逻辑关系,和类型)

建表之后

可以使用select*from <表名>进行查看内容了


 

如此可以简单进行数据的长久储存了。


案例:

实现创建数据库,并向其中传入数据,由于案例较简单,在此不进行赘述。

看图:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值