雨松MOMO带你走进游戏开发的世界之数据库SQLite 详细介绍
数据库SQLite介绍
数据库最经典的四个操作 添加、删除、修改、查找,在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据,举个例子 好比现在要实现一个搜索功能 用数据库的话只须要其中一个搜索条件 一个数据库语句就可以迅速的在N条数据中找到我们需要的数据,如果不使用数据库那么查找起来会非常麻烦,效率大打折扣,所以在处理大量数据的时候使用数据库是明确的选择,在Android的开发中使用的数据库是SQLite
,它是一个轻量级的数据库 、非常小 、 移植性好、效率高、可靠 ,嵌入式设备因为受到硬件条件的限制所以非常适合使用 SQLite 数据库。
创建与删除数据库 封装一个类去继承SQLiteOpenHelper 在构造函数中传入数据库名称与数据库版本号,数据库被创建的时候会调用onCreate(SQLiteDatabase db) 方法,数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,可以方便的对软件游戏升级后做出相应处理避免覆盖安装数据库发生改变产生的错误。调用SQLiteOpenHelper
的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建 并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。
封装了一个DatabaseHelper类继承SQLiteOpenHelper 我使用了设计模式中的单例模式来处理这个类,这里说一下单例模式 单例模式是常见的代码设计模式之一 它的好处是在于避免在内存中频繁的实例化所以将它的对象写成static 静态 这样它的对象就只有一份存在静态内存区使用的时候只须要通过getInstance()就可以直接拿到这个静态对象。
在这个类中使用DatabaseHelper对象 实现创建与删除数据库、
创建的数据库会被保存在当前项目中 databases 路径下 具体如图所示
添加与删除数据库中的表
数据库是可以由多张数据表组成的 如果添加一张数据库的表的话 可以使用 数据库语句 create table 名称(内容) 来进行添加 。这里给出一条创建数据库的语句 。 意思是创建一张表 名称为gameInfo 表中包含的字段 为 _id 为INTEGER 类型 并且递增 name 为Text类型 hp mp 为INTEGER 默认数值为100 number 为INTEGER
类型。
数据库中删除一张表 直接使用DROP TABLE 表名称 就可以删除
在代码中去执行一条SQL语句 使用SQLiteDatabase对象去调用execSQL() 传入SQL语句就OK了。
以创建一张名称为gameInfo的表为例 给出代码实现
增加 删除 修改 查询 数据库中的数据使用SQLiteDatabase对象调用 insert()方法 传入标的名称与ContentValues 添加的内容 则可以向数据库表中写入一条数据 delete ()为删除一条数据 update()为更新一条数据。
我详细说一下查找一条数据使用的方法 query 中 跟了8个参数
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
参数说明:
table:数据库表的名称
columns:数据库列名称数组 写入后最后返回的Cursor中只能查到这里的列的内容
selection:查询条件
selectionArgs:查询结果
groupBy:分组列
having:分组条件
orderBy:排序列
limit:分页查询限制
Cursor:返回值,将查询到的结果都存在Cursor
Cursor是一个游标接口,每次查询的结果都会保存在Cursor中 可以通过遍历Cursor的方法拿到当前查询到的所有信息。
Cursor的方法
moveToFirst() //将Curor的游标移动到第一条
moveToLast()///将Curor的游标移动到最后一条
move(int offset)//将Curor的游标移动到指定ID
moveToNext()//将Curor的游标移动到下一条
moveToPrevious()//将Curor的游标移动到上一条
getCount() //得到Cursor 总记录条数
isFirst() //判断当前游标是否为第一条记录
isLast()//判断当前游标是否为最后一条数据
getInt(int columnIndex) //根据列名称获得列索引ID
getString(int columnIndex)//根据索引ID 拿到表中存的字段
这里给出一个例子遍历Cursor的例子
这里我在强调一下query中的第二个参数String [] columns , 举个例子 当前在数据中query 数值 如果我只想要数据中符合条件数据每一行的name字段和hp 字段 那么第二个参数就不要写成null了。
第二个参数我写成了new String[] {"name","hp"} 这样的话得到的Cursor 中的数据只会存有 数据库表中"name " 与 "hp"两个字段 因为其它字段我们根本不需要所以着么写可以大大提高代码的效率。如果写成null的话 Cursor 中的数据就会把数据库表中所以的字段都保存进去这样在计算Cursor 的时候代码就会消耗更多没用的时间。
cursor.getString(0); 的意思就是拿到对应new String[] {"name","hp"} 数组中的一个字段的内容 意思就是拿到 数据库字段"name"的值, cursor.getString(1);的意思就是拿到数据库字段"hp"的值 。cursor.getString()中的ID 是完全对应第二个参数String [] columns数组角标。
相关推荐
雨松MOMO带你做游戏 Android软件开发之数据库SQLite 详解源码 欢迎大家下载阅读。
Android源码——数据库SQLite.zip
android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...
android应用,将外部的sqlite数据库导入到应用的私有空间中,源db文件置于assets目录下,如果源文件大小超过1M,使用Filesplit分割为不超过1M的小文件,那么就将所有分小文件置于assets目录下,本工程里已带...
Android实验报告Sqlite数据库操作.pdf
Android 开发中使用 SQLite 数据库
主要为大家详细介绍了Android登录注册功能,数据库SQLite验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前情提要:Android 数据库(SQLite) 【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】 https://blog.csdn.net/weixin_44949135/article/details/105955663 Android ...
Android studio软件开发:基于SQLite数据库编写的学生管理系统源码,学生信息的增删改查和list view列表显示数据库内容,内附含sharepreference数据库编写的基础注册页面。
ndroid SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软件时创建出应用使用到...
Android程序研发源码Android 数据库SQLite.zip
Sqlite数据库简介 SQLite3数据库的操作 在SQLite中执行常用SQL语句 用sqlite命令管理数据库
手写简化适用于安卓开发中的SQLite数据库工具类,包含数据的增删改查,适用于各个需要本地数据库开发。
Android 数据库SQLite的简单使用,实现我的便签
这是基于android开发的学生信息管理系统,包括学生的增加、删除、查询、修改、详细信息查看;除此之外,该系统应用到了手机内置的sqlite数据库来进行数据的存储,所以,是学生学习android的一次不错的选择,应用工具...
Android 开发中使用 SQLite 数据库
Android开发学习教程—Android使用SQLite数据库