• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android-SQLite和SQLiteOpenHelper

Android-SQLite和SQLiteOpenHelper

作者:火星男孩的分享空间 字体:[增加 减小] 来源:互联网 时间:2017-07-22

火星男孩的分享空间通过本文主要向大家介绍了Android,SQLite等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 

参考:
Android 操作SQLite基本用法

一、 SQLite介绍

SQLite是android内置的一个很小的关系型数据库。
SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。

SQLite的特点:

轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态 库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。
不需要”安装”
SQLite的核心引擎本身不依赖第三方的软件,使用它也不需要”安装”。有点类似那种绿色软件。
单一文件
数据库中所有的信息(比如表、视图等)都包含在一个文件内。这个文件可以自由复制到其它目录或其它机器上。
跨平台/可移植性
除了主流操作系统 windows,linux之后,SQLite还支持其它一些不常用的操作系统。
弱类型的字段
同一列中的数据可以是不同类型
开源

SQLite数据类型

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下几种常用的数据类型:

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数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。

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

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

SQLiteDatabase的介绍

Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。

//SQLiteDatabase的常用方法 
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory  factory)
打开或创建数据库

insert(String table,String nullColumnHack,ContentValues  values)
插入一条记录

delete(String table,String whereClause,String[]  whereArgs)
删除一条记录

query(String table,String[] columns,String selection,String[]  selectionArgs,String groupBy,String having,String  orderBy)
查询一条记录

update(String table,ContentValues values,String whereClause,String[]  whereArgs)
修改记录

execSQL(String sql)
执行一条SQL语句

close()
关闭数据库

二、 SQLiteOpenHelper的使用方法

SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本

SQLiteOpenHelper 类的使用步骤:
1、 创建SQLiteOpenHelper类的子类MySQLiteOpenHelper 类,实现SQLiteOpenHelper类中的抽象方法onCreate()和onUpgrade();

//打开或者创建数据库
db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/stu.db",null);  

2、调用 MySQLiteOpenHelper 对象的getWritableDatabase 或 getReadableDatabase方法, 获得SQLiteDatabase 对象;

MySQLiteOpenHelper dbHelper=new MySQLiteOpenHelper(getContext());
SQLiteDatabase db = dbHelper.getReadableDatabase();    // 磁盘满了依然可读

注意:
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。
但getWritableDatabase() 方法以写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。
getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
因此建议使用getReadableDatabase()方法来获打开数据库。

3、创建表。实际上是执行DML操作的Create;

private void createTable(SQLiteDatabase db){   
//创建表SQL语句   
String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";   
//执行SQL语句   
db.execSQL(stu_table);   
}  

4、调用SQLiteDatabase 对象的execSQL()方法,执行 update,insert,delete操作;调用rawQuery()方法执行select查询操作;
5、 如果执行的是查询操作,则对返回的Cursor进一步处理。
6、关闭db , 关闭cursor。

插入数据:

//插入数据方法一
private void insert(SQLiteDatabase db){   
//实例化常量值   
ContentValues cValue = new ContentValues();   
//添加用户名   
cValue.put("sname","xiaoming");   
//添加密码   
cValue.put("snumber","01005");   
//调用insert()方法插入数据   
db.insert("stu_table",null,cValue);   
}   

//插入数据方法二
private void 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android:手把手教你 实现Activity 与 Fragment 相互通信(含Demo)
  • android自定义圆角背景实现富文本标题展示
  • 自定义收集用户行为统计库 (非常方便 可以自己拓展)
  • Android 6.0 Phone"通话显示"查询流程
  • Android缓存处理
  • 自定义进度条PictureProgressBar——从开发到开源发布全过程
  • 详解Android中的SQLite数据库存储
  • Android设备上获取照片、裁剪图片、压缩图片
  • Android触摸事件分发机制完全解析《一》
  • Android-SQLite和SQLiteOpenHelper

相关文章

  • 2017-05-26Android 手机卫士--平移动画实现,android卫士
  • 2017-05-26自定义控件详解(四):Paint 画笔路径效果,paint画笔
  • 2017-05-26手机安全卫士——病毒查杀,安全卫士病毒查杀
  • 2017-05-26用树莓派实现对话机器人
  • 2017-05-26Google官方MVP模式示例项目解析 todo-mvp,mvptodo-mvp
  • 2017-05-26clipChildren属性,clipchildren
  • 2017-05-26android 图片加载库 Glide 的使用介绍,
  • 2017-05-26Android自定义实现循环滚轮控件WheelView
  • 2017-05-26setOnLongClickListener中return值,onlongclicklistener
  • 2017-05-26AndroidStudio怎样导入jar包,androidstudiojar

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android系统四层架构分享,android四层架构
    • AndroidUSB转串口通信开发基本流程
    • 国外干货!6个方法助你设计出优秀的APP,干货app
    • 安卓中Paint类和Canvas类的方法汇总,安卓中canvas
    • Android 几种消息推送方案总结,android方案
    • 2.3.3 Button(按钮)与ImageButton(图像按钮)
    • Android 手机卫士--导航界面4的业务逻辑,android卫士
    • android NDK 教程一(初识JNI--hello world)
    • linux设备驱动程序之时钟管理(2)----又见结构
    • Android中使用Notification实现宽视图通知栏(Notification示例二),notification大视图

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有