简介:

  在Android平台上,继承了一个嵌入式关系型数据库---SQLite.SQLite具有跨平台特性,可以在所有主要的操作系统上运行。SQLite通过独占性和共享锁实现独立事务处理,因此多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据,在进行写操作之前,必须先获得独占锁。另一方面,SQLite采取动态数据类型,当某个值插入数据库时,SQLite会检查它的类型,如果该类型与所关联的列不匹配,SQLite则会进行强制转换。SQLite支持以下几种数据类型:NULL(空值)、INTEGER(整型值)、REAL(浮点值)、TEXT(字符串文本)、BLOB(二进制对象)。

SQLiteOpenHelper类:

  SQLiteOpenHelper提供了两个重要的方法:

  1.onCreate(SQLiteDatabase db)   当应用第一次创建数据库实例时候,系统会新建一个数据库,接着调用onCreate()方法,在该方法里生成数据库表结构以及进行一些数据初始化操作。

  2.onUpdate(SQLiteDatabase db ,int oldVersion,int newVersion)  当数据库版本发生变化时,该方法被调用,进行一些表结构的更新。

SQLiteDatabase类:

  对数据库的一些操作,如增删改查都可以通过该类完成:

  1.inser()---增加数据

//增加数据public void inser(User user){ContentValues values=new ContentValues();//创建ContentValues对象//向ContentValues对象中插入键值对,第一个参数为列名,第二个参数为该列数据值
        values.put(USERNAME, user.getUsername());values.put(PASSWORD, user.getPassword());//调用insert方法,将数据插入到数据库中//第一个参数:表名//第二个参数:如果ContentValues为空,则该列为null(SQLite不允许出现空列)db.insert(TABLE_NAME, null, values);}

  2.delete()---删除数据

//删除数据public void delete(){String whereClause="username=?";//删除条件String[] whereArgs={"mr"};//删除条件的参数db.delete(TABLE_NAME, whereClause, whereArgs);//执行删除//第二种删除方式/*String sql="delete from"+TABLE_NAME+"where username='mr'";//删除操作的SQL语句db.execSQL(sql);//执行删除*/}

  3.update()---更改数据

//更改数据public void update(){String whereClause="USERNAME=?";//删除条件String[] whereArgs={"mr"};//删除条件的参数ContentValues values=new ContentValues();values.put("PASSWORD", "555");//添加要修改的字段
        db.update(TABLE_NAME, values, whereClause, whereArgs);//第二种更改方式/** String sql="update [TABLE_NAME] set password='555'where username='mr'"//更新SQL语句* db.execSQL(sql);* */}

  4.query()---查询数据

//根据ID进行查询数据public User query(int id){User user=new User();//第一个参数:表名//第二个参数:要查询的列名//第三个参数:查询条件//第四个参数:查询条件的参数//第五个参数:对查询结果进行分组//第六个参数:对分组的结果进行限制//第七个参数:对查询结果进行排序Cursor cursor = db.query(TABLE_NAME, new String[] { USERNAME, PASSWORD }, "_id = " + id, null, null, null, null);if(cursor.getCount()>0){cursor.moveToFirst();//将游标移到第一条记录user.setUsername(cursor.getString(0));//获得用户名的值然后进行设置,"0"代表列的索引,也可用cursor.getColumnIndex("username")user.setPassword(cursor.getString(1));return user;}cursor.close();//关闭游标return null;}

  以上对数据库的操作有两种方式可以实现,一种是针对像我这样的菜鸟级别使用的通过调用SQLiteDatabase封装的方法来实现相应的操作;另一种是通过db.execSQL()直接执行SQL语句便可实现指定的操作.

  对数据库的一些操作中涉及到一个Cursor类,在android中对数据进行查询都是通过Cursor来实现。Cursor有几下几个特性:

    *Cursor是每行的集合

    *使用moveToFirst()定位至第一行

    *必须知道每一列的名称及数据类型

    *Cursor是一个随机的数据源

    *所有的数据都是通过下标取得

  下面是Cursor常用的一些方法:

    *close()---关闭游标

    *getColumnIndex(String columnName)---获取指定列索引

    *moveToFirst()---移动光标至第一行

    *moveToLast()---移动光标至最后一行

    *moveToNext()---移动光标至下一行

转载于:https://www.cnblogs.com/dream550/p/3905700.html

基础篇:6.Android数据库编程---SQLite相关推荐

  1. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解

    Android编程之SQLite数据库操作方法详解 发布时间:2020-09-07 12:33:04 来源:脚本之家 阅读:85 作者:低调小一 本文实例讲述了Android SQLite数据库操作方 ...

  2. Android教程之android数据库编程

    由于android内置了SQLite数据库! SQLite本身就是一个很小型的数据库! 数据库存储的位置在data/data/<项目文件夹>/databases/ 1:创建数据库Conte ...

  3. Android日志[基础篇]二 Android Studio修改LogCat日志的颜色

    上一篇提到Android日志的5个级别的日志输出,在logcat里面设置自己喜欢或习惯的颜色,本文不只讲Android Sudio修改logcat的日志颜色. 代码和效果 代码 private voi ...

  4. Android 数据库(SQLite)的导入导出命令

    在网上找了很多有关android数据库的导入导出,都找不到答案,今天问了同事才得知,分享给大家: android不管是真机还是模拟器都可执行一下导入导出操作: cmd打开命令窗口: 导入: adb p ...

  5. 深入探索 Android 网络优化(二、网络优化基础篇,android编程基础教程

    3.BDP(Bandwidth-delay product,带宽延迟积) 接收窗口(rwnd)会随每次 ACK 一起发送,而 拥塞窗口(cwnd)则由发送端根据拥塞控制和预防算法动态调整. 无论发送端 ...

  6. Android数据库开发——SQLite

    上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app ...

  7. Android数据库 之 SQLite数据库

    一.关系型数据库SQLIte 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于20 ...

  8. android 数据库索引,SQLite数据库提供警告自动索引(列)升级Android L后

    我已经升级了我的Nexus 7与Android 5.0 Lollipop,之前,我的应用程序运行良好与SQLite数据库,但现在每当我执行任何类型的查询,它给我log cat错误,如: 12-09 1 ...

  9. Java基础篇(05):函数式编程概念和应用

    本文源码:GitHub·点这里 || GitEE·点这里 文章目录 一.函数式概念 二.函数与方法 三.JDK函数基础 1.Lambda表达式 2.函数式接口 四.Optional类 1.Null判断 ...

  10. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

最新文章

  1. 使用EF操作Oracle数据库小计
  2. 准备mysql函数库和PHP文件
  3. 阿里云物联网生活平台简介
  4. python顺时针螺旋顺序
  5. JQuery学习系列(九)AJAX
  6. 具有N个量子存储位的计算机,未来世界是科技的世界,未来的计算机也会有这几类...
  7. 史上最全JavaScript数组去重的十种方法(推荐)
  8. 台式机设成仅计算机,如何把台式电脑设置成wifi热点
  9. eclipse安装中文补丁包
  10. TMC8670 – 集成EtherCAT通讯和FOC伺服运动控制芯片适用2/3相永磁同步电机
  11. Markdown 语法支持测试
  12. 基于.net开发chrome核心浏览器【六】
  13. 对于Python的get-pip.py安装教程
  14. 爱德华·琼斯(Edward Jones)公司
  15. might和could的区别用法_can,could,may might,must,ought 的区别和用法
  16. uniapp输入框弹起软键盘顶起页面
  17. BurpSuit暴力破解密码
  18. 【面试 分布式锁详细解析】续命 自旋锁 看门狗 重入锁,加锁 续命 解锁 核心源码,lua脚本解析,具体代码和lua脚本如何实现
  19. MATLAB信号处理——分解信号,双谱重构
  20. win环境下SSH key 配置

热门文章

  1. 数据库学习笔记6-隔离级别 Serializable
  2. two phase commit protocol(2PC)两个阶段提交是什么
  3. oracle 查看数据库启动时间同步,oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(4)...
  4. css叠层_CSS 理解样式层叠
  5. matlab传热模拟计算,MATLAB生物化工计算与模拟
  6. python 3.5.2 下载(带资源免费)
  7. JavaScript 中的 this 到底指向谁?
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
  9. [翻译]架构师应该知道的97件事_03关键问题可能不是出在技术上
  10. Java语言中的泛型