Android数据库之基本概念(上)
1.Android数据库简单介绍
Android通过结合使用SQLite数据库和Content Provider,提供了结构化数据的持久功能。
SQLite数据库能够通过一种结构化的、易于管理的方法来存储应用程序数据。
Android提供了一个完整的SQLite关系数据库的库文件。每一个应用程序都能够创建自己的数据库,并对这个数据库拥有全然的控制权。
Android数据库存储在设备上的/data/data/<package name>/database目录中。全部的数据库都是私有的,仅仅能被创建他们的应用程序訪问。
2.Content Provider简单介绍
Content Provider提供了一种基于使用“content://”模式的简单URI寻址模型来公布和使用数据的接口,是安卓四大组件之中的一个。
创建了底层数据存储之后。就能够使用Content Provider,它通过底层数据源运行了一致的抽象,使得应用程序不必过于依赖某个数据源。
使用它能够实现应用程序间数据的共享,比方我们的应用能够调取短信或联系人的操作。当然我们也能够公布我们自己的Content Provider,这样别人就能够在他们的应用中对我们的数据库进行CRUD的操作了。
详细用法,后期会有专题进行介绍。
3.SQLite简单介绍
SQLite是一种流行的关系数据库管理系统(Relational Database Manager System)。
特征为:开源 符合标准 轻量级。
它已经被实现为简洁的C语言。而且成为Android软件栈的一部分。
通过作为一个库实现。而不是作为一个独立的进程不断运行。每一个SQLite数据库成为创建它的应用程序的完整部分。这样做能降低应用程序的外部依赖性、最小化延迟并简化事务锁定和同步。
SQLite非常可靠,是很多消费类电子产品(如非常多MP3播放器和智能手机)首选的数据库系统。
4.Content Value和Cursor
Content Value用来向数据库中的表插入新的行。
每个ContentValues对象都将一个表行表示为列名到值得映射。
数据库查询作为Cursor对象返回。Cursor是底层数据中的结果集的指针。他没有提取和返回结果值得副本。
Cursor的经常用法:
cursor.moveToFirst();//把游标移动到查询结果中的第一行
cursor.moveToNext();//把游标移动到下一行
cursor.moveToLast();//把游标移动到最后一行
cursor.moveToPrevious();//把游标往前移动一行
cursor.getCount();//获取结果集的数量
cursor.getColumnIndexOrThrow("");//依据指定列名返回其索引,从0開始,没有则抛出异常
cursor.getColumnNames();//获取当前cursor中的全部列名的字符串数据
cursor.getColumnName(1);//依据索引返回列名
cursor.moveToPosition(1);//把游标移动到指定行
cursor.getPosition();//获取当前游标的位置
5.SQLiteOpenHelper简单介绍
SQLiteOpenHelper是一个抽象类,用于实现创建、打开和升级数据库。
SQLiteOpenHelper会在成功打开数据库实例后再缓存它们。所以我们能够在要运行查询或事务前请求打开数据库。除非我们不再须要使用数据库,否则无需手动关闭他们。
数据库操作特别是打开和创建的额时候须要非常长的时间才干完毕,因此为了确保这些操作不会影响用户体验,应使数据库操作异步运行。
一般。在我们的应用中须要定义一个类继承SQLiteOpenhelper类。通过重写其构造函数 onCreate onUpgrade方法来分别处理创建数据库和升级到新版本号数据库。
一些数据库主要的概念就简介到这了,下一篇实战代码介绍一下android数据库的增删改查操作。
最新文章
- hdu 5534 (完全背包) Partial Tree
- java面试题之ssh
- c程序代码优化的一些方法
- Apache虚拟主机配置(多个域名访问多个目录)
- ASPNET5中的那些K
- SpringMVC(三)——其他知识
- Post和Get差异
- LINUX下编译安装最新版本mysql
- 纯CSS3美化单选按钮radio
- 老生常谈之SQL Server (行转列,列转行)
- Python内置函数(44)——len
- 三分钟学会.NET微服务之Polly
- 肺结节CT影像特征提取(五)——肺结节CT影像ROI区域灰度直方图及其图形化
- LongAdder 测试
- 开发一个简单的chrome插件-解析本地markdown文件
- myql 格式化日期
- C#调用系统打印机和收银钱箱
- gdb 调试入门,大牛写的高质量指南
- 干货 | JavaScript内存空间详解
- 黄聪: $(document).click() 在iphone上不触发事件解决办法
热门文章
- CodeForces 738E Subordinates
- 第1天:Ansible安装部署
- 【IO】同步、异步、阻塞、非阻塞的理解
- cobol COMP-3最后1位
- CCF 第六次计算机职业认证 第四题 收货 stl动态存储和fleury算法的综合应用
- [UOJ348]州区划分
- Eden的退役记
- 通过scrapy内置的ImagePipeline下载图片到本地、并提取本地保存地址
- 8VC Venture Cup 2016 - Elimination Round A. Robot Sequence 暴力
- [典型漏洞分享]Insert型SQL注入的发现和利用,篡改订单金额