简介

该博客主要是为安卓数据库开发做的笔记,该笔记肯定有很多不完善的地方,希望dalao们及时指正,不胜感激。该笔记很大程度上参考了《第一行代码》第二版,很多细节大家可以参考书籍,本笔记主要是一个总结。

SQLiteOpenHelper

类的简介

SQLiteOpenHelper用于创建和升级数据库。在安卓的数据库系统中,一旦创建了一个数据库的表,那么这个表会一致存在于应用的文件夹中,除非程序被卸载。这是一个抽象类,一般我们需要继承并实现这个抽象类。该类有两个核心的函数:onCreate()onUpgrade()。前者用于创建数据库,后者用来更新数据库。一旦数据库的表创建后,就不能随便更改格式,除非卸载这个表并重新建立,或者使用onUpgrade()函数更新表的结构。

构造函数

假设myDataBaseHelper这个类继承了SQLiteOpenHelper:

public class myDataBaseHelper extends SQLiteOpenHelper{}

那么我们需要在构造函数中进行如下的声明:

    public myDataBaseHelper(Context context, String name,SQLiteDatabase.CursorFactory factory, int version){super(context, name, factory, version);}

context是当前的上下文环境;name是自定义的数据库的名字,factory一般是表示查询时传入的Cursor,一般传入null,需要时查询; 最后一个时数据库的版本,用于升级。

onCreate() 函数简介

该函数用于建表。因为构造函数创建了一个数据库,那么在创建的数据库中需要根据需求建表,不懂的自己看数据库原理吧。。。构造函数中一般是写建表的SQL语句,我们一般以静态成员的方式定义建表语句,然后执行。

    @Overridepublic void onCreate(SQLiteDatabase db){db.execSQL(CREATE_BOOK);}

CREATE_BOOK时建表语句,在这里定义成静态String类型, 当定义玩数据库后,就会根据语句的含义在相应的db中建立一个表,如果之前那个表存在,不会建立新的表。注意,这里的db是自己命名的一个数据库,比如我们可以传入"BookDB.db"表示建立或者使用BookDB.db这个数据库。

一般来说,定义好数据库后,会调用getWritableDatabase()或者getReadableDatabase()方法,通过这两函数进行数据库的构建。实际上,这两个函数调用了onCreate函数,如果数据库已经存在了,这两个函数会返回一个数据库对象。

onUpgrade() 函数简介

该函数用于数据库的更新操作。如果我们想要在已有的数据库中添加一个新的表,需要重写并调用这个方法。当然,建立新表的语句在onCreate方法中完成。
方法如下:

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){// 如果存在Book这个表,那么把表删除,一般是根据需要进行操作// db.execSQL("drop table if exists Book");// 创建新版本的数据库onCreate(db);}

重写完这个方法后,在调用构造函数myDataBaseHelper时,仅仅需要把version参数改成比之前的高一个版本即可。调用完构造函数后,在执行getWritableDatabase()或者getReadableDatabase()方法,进行数据库的构建

SQLiteDatabase

这是一个数据库对象,用于对数据库进行”增、删、改、查”的操作。因为SQLiteOpenHelpergetWritableDatabase()或者getReadableDatabase()方法返回这个类型的对象,我们需要定义一个该类型的对象来引用这个返回。

insert插入操作

SQLiteDatabase::insert("Book", null, values)Book是数据库中表的名字;第二个参数为限制条件,一般传入null,需要时再查询;values是要传入的数据,是ContentValues数据类型。

// 添加数据
ContentValues values=new ContentValues();
// 第一个参数是列名
values.put("name", "The Da Vinci Code");
values.put("price",16.96);
// 插入数据
db.insert("Book",null,values);

update()更新方法

// 建立数据库
dhHelper=new myDataBase(this, "BookStore.db",null,2);
// 获取相应的数据库对象
SQLiteDatabase db=new dbHelper.getWritableDatabase();
// 设置更改的数据
ContentValues values=new ContentValues();
values.put("price",10.99);
// 更新数据
db.update("Book",values,"name=?",new String[]{"The Da Vinci Code"});

db.update("Book",values,"name=?",new String[]{"The Da Vinci Code"})中的第一个参数表示表的名称;第二个参数表示更新的数值;第三个参数是个占位符,相当于where语句;第四个参数提供字符串数组,为第三个参数指定相应的内容。

delete删除操作

// 建立数据库
dhHelper=new myDataBase(this, "BookStore.db",null,2);
// 获取相应的数据库对象
SQLiteDatabase db=new dbHelper.getWritableDatabase();
// 删除数据
db.update("Book","page>?",new String[]{"500"});

三个参数分别是:表明、where限制语句、限制条件的具体内容

query()查询操作

该函数有7个参数,分别是:

一般根据需要进行选取。

调用完之后会返回一个Cursor对象,查询到的所有对象都从这个对象中取出。
比如:

/ 建立数据库
dhHelper=new myDataBase(this, "BookStore.db",null,2);
// 获取相应的数据库对象
SQLiteDatabase db=new dbHelper.getWritableDatabase();// 获取要查询的数据对象,在这里获取整个表的内容
Cursor cursor=db.query("Book",null,null,null,null,null,null);
// 遍历所有的元素
if(cursot.moveToFirst()){do{String name=cursor.getString(cursor.getColumnIndex("pages"));String name=curosr.getString(cursor.getColumnIndex("name"));}while(cursor.moveToNext());
}
cursor.close();  // 在这里释放掉所有的元素

也可以使用原生的数据库语句进行查询,在这里不在赘述,直接查找有关手册即可。

总结

SQLiteOpenHelper用于建立和更新数据库, SQLiteDatabase用于获取前者建立的数据库对象,并在获得的数据库对象中,对有关表进行操作。 两者配合使用,完成一般数据库的操作。

安卓数据库的使用方式相关推荐

  1. android系统密码设置功能,手机锁屏密码怎么设置 三种安卓手机锁屏方式推荐

    手机中有很多应用都是与金钱挂钩,特别是微信与支付宝等等既涉及到隐私又与财产关联,这是后手机的安全就尤为重要的,而手机的锁屏密码就是一道最基本的防护措施,那么手机锁屏密码怎么设置?来看看小编推荐的三种安 ...

  2. DB扩展名的数据库文件怎么打开:两种db数据库的打开方式

    两种db数据库的打开方式 现在桌面级的各种管理系统使用的数据库都是比较常见的类型,比如Access数据库(扩展名为mdb).xBase类数据库(扩展名为dbf),但有两种扩展名同为db的数据库,分属两 ...

  3. java如何做数据归档_oracle数据库的归档方式

    数据库可运行在两种不同方式下:NOARCHIVELOG方式(介质恢复无效)或ARCHIVELOG方式(介质恢复有效).数据库的运行方式对数据库的 备份和恢复 策略具有重要的影响.归档日志对数据库备份和 ...

  4. django mysql 创建表_关于 django ORM 中,数据库建表方式的问题

    本人以前是做客户端的,做后端没多久. 一直有一个问题困扰我,正好现在手上有一个系统在做. 系统逻辑是写一个爬虫在网上爬取一个网站的信息, 经过加工处理后,使用 django 来展示和交互. 表结构简化 ...

  5. php mysql 替换 pdo,php操作MySQL数据库之PDO方式

    这篇文章主要介绍了关于php操作MySQL数据库之PDO方式 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下基本使用 1)连接数据库$pdo = new PDO("mysql ...

  6. JetPack Room数据库组件使用方式

    JetPack Room数据库组件使用方式 1.Room 简介 Goolge官方是这样描述的 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时, 能够流畅 ...

  7. 【Mysql数据库】数据库添加索引方式

    文章目录 数据库添加索引方式 1.添加PRIMARY KEY(主键索引) 2.添加UNIQUE(唯一索引) 3.添加普通索引 4.添加全文索引 5.添加多列索引 数据库添加索引方式 1.添加PRIMA ...

  8. 图片或者其他文件在数据库的存储方式详解

    关于图片或者文件在数据库的存储方式归纳 商品图片,用户上传的头像,其他方面的图片.目前业界存储图片有两种做法: 1.  把图片直接以二进制形式存储在数据库中 一般数据库提供一个二进制字段来存储二进制数 ...

  9. python常见数据库的连接方式【游标】及【pandas】数据读取

    本文介绍以下数据库的连接方式,及数据的增删改查 下方中用到的数据,均为随机数据,无实际业务意义. Mysql-游标及pandas连接方式 PostgreSQL-游标及pandas连接方式 Oracle ...

最新文章

  1. 查询前10条_阿里开发强制要求的10条ORM映射查询规范,开发人员值得看
  2. VMware安装RedHat 6(64位)报错问题
  3. Http中涉及到的知识点总结
  4. 作业调度算法--高响应比优先 操作系统_处理器管理_编程题
  5. java 无名类做参数_说说你知道的几种主要的JVM参数
  6. 《第一行代码》学习笔记35-服务Service(2)
  7. 为什么盯一个字看久了,反而感觉不认识了?
  8. Ninject依赖注入(一)
  9. 从浪漫走向坚韧:开源数据库的演变
  10. 在二元树中查找和为某一值的所有路径
  11. 存储过程/函数权限的问题解决(The user specified as a definer ('root'@'%') does not exist)...
  12. hashmap hash冲突怎么解决_让我再撸一次HashMap
  13. loadrunner11 linux服务器,loadrunner11监控linux服务器性能
  14. mysql数据导出insert_mysql 数据导出
  15. 码农都该知道的开发工具
  16. 软酷优计划java考试复习题_软酷题
  17. 【XSY3367】青春野狼不做姐控偶像的梦(线段树)
  18. SAP 新配置公司代码F-02记账时报错“通用日记账的分类账定制设置中存在不一致” 解决
  19. java加密解密 pdf_Java 加密和解密PDF文档
  20. uber幽灵车_Uber&Careem合并:新兴的出租车服务将在中东和北非地区产生影响?...

热门文章

  1. 学计算机的副部级,中国31所副部级大学排名
  2. python网络爬虫学习笔记(五):urllib.parse库
  3. 牛客 2021年度训练联盟热身训练赛第二场 D题Soccer Standings
  4. hihocoder234周 计算不包含黑点的矩形个数
  5. ODrive踩坑(二)3508电机和TLE5012B磁编码器参数配置、校准、位置闭环模式转动电机(TLE5012B-E1000)
  6. 语义分割之图像经镜像、翻转、裁剪后像素点的位置映射
  7. 【WCF】WCF服务库和WCF服务应用程序的区别
  8. javascript中的||运算符
  9. 随机显示个性签名代码
  10. python爬虫之requests模块2