SQLite是Android内嵌的一个数据库,用于存储大量的数据,其特点是轻量级,占用内存很少,不需要安装,多有的数据都包含在一个文件中,多个平台只需拷贝数据库文件就可直接使用,默认只能本应用访问,app卸载时会一同被卸载。

存储路径:/data/data/包名/databases/xx.db

SQLite管理工具:可视化的数据库管理工具,推荐SQLite Expert Professional,

下载地址:http://www.sqliteexpert.com

主键:_id integer primary key autoincrement  表示设置_id为主键并自增

数据库类型

NULL: 这个值为空值

VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。

CHAR(n):长度固定为n的字串,n不能超过 254。

INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.

REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。

BINARY:用于保存图片,对应字节数组byte[]

DATA :包含了 年份、月份、日期。

TIME: 包含了 小时、分钟、秒

SQLiteDatabase

SQLiteDatabase代表一个数据库对象,数据库的核心类之一,针对数据操作的主要类,主要对数据库的表的创建,增删改查等动作,其方法:

SQLiteDatabase除了本身的insert,update,delete等操作语句,还有两个同样可以进行数据的操作。

executeSQL(String sql, Object[] bindArgs);// 执行语句的增删改,并不是用于查询

rawQuery(String sql, String[] selectionArgs);查询语句,返回Cursor对象

常用增删改查语句

创建表:db.execSQL("create table wdply(_id integer primary key autoincrement,name varchar ,age int,sex varchat,tel varchar)");

增:db.execSQL("insert into wdply values(null,?,?,?,?)", newObject[]{"小明",1,"男","159"});

删:db.execSQL("delete from wdply where name=?", newObject[]{"小明"});

改:db.execSQL("update wdply set sex=? where name=?", newObject[]{"女","小明"});

查:Cursor cursor = db.rawQuery("select * from wdply", null);

Cursor对象

查询语句时,返回cursor对象,用于读取查询到的数据,cursor对象常用的方法:

SQLiteOpenHelper

是抽象类,子类必须继承SQLiteOpenHelper,并实现其连个抽象方法:

onUpgrade(SQLiteDatabasedb, int oldVersion, int newVersion)

SQLiteDatabase会自动检测数据库文件是否存在,如果数据库存在,会打开这个数据库,在这种情况下并不会执行onCreate()方法,如果数据库文件不存在,则会创建一个数据库,并打开这个数据库,最后执行onCreate方法,因此,onCreate方法一般用来在新创建的数据库中建立表,视图等数据库组件,也就是说onCreate方法在数据库第一次创建的时候调用。

数据库创建会有一个初始化版本为1,数据库升级时需增大这个版本号,这是SQLiteDatabase会调用OnUpgrade方法,调用完后系统会更新数据库版本号,因此在OnUpdate方法中一般先删除要升级的表,视图等,然后在创建他们。

总结:如果数据库文件不存在,只有onCreate方法被调用,(该方法只会被调用一次),如果数据库文件存在,并且当前版本较高,执行onUpgrade方法更新数据库,并更新版本号。

Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。(getReadableDatabase()方法中会调用getWritableDatabase()方法)

其中getWritableDatabase()方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase()方法就会出错。

getReadableDatabase()方法则是先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象

demo样例:

sqlite只能用于android系统,android SQLite相关推荐

  1. sqlite只能用于android系统,Android 数据库的使用 -- Sqlite

    Sqlite介绍 SQLite 是一款内置到移动设备上的轻量型的数据库,是遵守 ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式系统中. SQLite 数据库是无类型的, ...

  2. 如何提升android系统,Android系统智能手机如何提升上网速度

    怎样才能保证使用的Android系统智能手机保持良好的上网速度呢?是重启手机?其实简单的重启并不能拥有很好的效果,在重启之前,我们还需要采取一些其它措施才能让Android智能手机在重启后上网更快,下 ...

  3. 智能投影机android系统,Android对比Windows 谁带投影入智能化

    投影智能 现况分析 [中关村在线投影机频道原创]每当我们提起智能化,首先出现在脑海中的一定是电脑和手机.从传统观念看,智能似乎与投影不沾边,然而现实告诉我们,投影智能化意识大势所趋. 投影进入智能化 ...

  4. 2014501能运行的android系统,Android中installd进程存在的意义

    1. 为什么需要installd 从下面的输出可以看出,system_server以system用户的身份运行.我们知道,PackageManager运行于system_server中.也就是说,Pa ...

  5. 理解Android系统(一)

    理解Android系统 Android 是业界流行的开源移动平台,受到广泛关注并为多个手机制造商作为手机的操作系统平台.由于它的开放性,市面上又出现了它的很多改良定制版本.且广泛的应用在手机.汽车.电 ...

  6. android系统adb命令

    动态换肤实现思路-网易云 adb命令 adb shell dumpsys window w |findstr / |findstr name= 查看内存中那个app在运行 adb push 命令格式: ...

  7. 关于android系统的介绍

    目前全球智能手机最主要的两大阵营是的的Android和IOS,机器人和IOS是移动操作系统的名称,它们背后的公司是谷歌和苹果,所以有时候也叫做谷歌系统和苹果系统.这里出现了一个名词"操作系统 ...

  8. Android系统的VTS测试套件介绍

    1. HAL硬件抽象层 下图是最新的Android系统架构: Android系统基于Linux系统内核,应用层使用Jave或Kotlin语言编写,底层控制设备的是Linux内核,Linux系统采用C语 ...

  9. 一加点击android系统时间,一加6手机系统迎来更新,一加让你快速吃“派”

    今年8月7号,谷歌正式发布最新Android系统--Android Pie.作为老大难的问题,手机厂商更新系统时间拖延一直让谷歌无能为力,不过,一加已经做好了迎接Android Pie的准备. 昨晚1 ...

  10. android l android 5,关于Android L的5个有趣事实

    谷歌在一个月前的I/O大会上正式发布了新一代Android系统Android L.尽管正式版Android L目前尚未发布,不过开发者预览版Android L已经向人们清楚地展示出了新版Android ...

最新文章

  1. 微软小冰发布知乎主题曲,人工智能首次开始接近人类歌手水平
  2. Tensorflow实战之下载MNIST数据,自动分成train, validation和test三个数据集
  3. AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
  4. python标准数据类型复习
  5. 今天的C位,必须是这位浙大卜教授!
  6. 初学Python目前我认为较容易理解的求100以内质数(素数)的方法。
  7. json例外被抛出并且未接住
  8. 各地的公安接口的配置说明书
  9. 最全 Yaml 语法详解
  10. 台式机和笔记本快速互拷超大文件
  11. 数据结构中的校园导航系统---c语言
  12. 【图像配准】基于光流场算法Horn_Schunck和Brox及Lucas_Kanade实现医学图像配准matlab代码
  13. 服务器经常被攻击怎么办?这7个重要因素要做好!
  14. 烟沙浮生 | 曾几何时,还是游吟长安的醉客 1
  15. 华为「天才少年」自制硬萌机器人,开源5小时,GitHub收获317星!
  16. 【附源码】计算机毕业设计SSM宁夏旅游信息管理系统
  17. 【数据库基础】02_数据库基础练习
  18. coursera课程,coursera课程下载学习
  19. ESP8266 NodeMcu机智云SOC方案开发经验分享
  20. 香港的区块链棋局, 十年后, 纽伦港还能主导金融世界吗?

热门文章

  1. JavaScript在发送AjAX请求时,URL的域名地址是使用绝对地址还是相对地址?
  2. 【JTAG、SBW、BSL】MSP430的BSL
  3. ValueError: Sample larger than population or is negative...
  4. softmax溢出问题
  5. 学生用计算机怎么转换进制,一种计算机二进制和十进制转换教具的制作方法
  6. vulnhub靶机_WHO WANTS TO BE KING: 1
  7. 双活数据中心存储问题梳理
  8. OV7725鹰眼摄像头
  9. python情绪识别_人脸情绪识别 测试心得(示例代码)
  10. Spark从SQL的解析、执行与调优到Sparksql的解析的史上最全介绍