热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

详解Android中一些SQLite的增删改查操作

这篇文章主要为大家详细介绍了Android中一些SQLLite的增删改查操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在Android开发中经常要涉及到对数据的操作。Android本身提供了四种数据存储方式。包括:SharePreference,SQLite,Content Provider,File
在Android,数据都是么私有的,要实现数据共享,正确方式是使用Content Provider。
SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider:Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。

本文主要是讲一些SQLite的操作并附上代码。

SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:
NULL:         空值
INTEGER:   整数
REAL:      浮点数
TEXT:      字符串
BLOB:     大数据

在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显示,为了能方便的操作DATE类型,SQLite提供了一组函数,详见:http://www.sqlite.org/lang_datefunc.html,这样简单的数据类型设计更加符合嵌入式设备的要求。

import android.content.ContentValues; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
 
/** 
 * 对表的增删改查的操作。这里的表里只有uid一列作为举例。 
 */ 
public class DemoDBUtil { 
 
 //要操作的表名 
 public static final String DEMO_DB_NAME = "demo_db_name"; 
 //SQLiteDatabase对象 
 private SQLiteDatabase sqLiteDatabase; 
  
 /** 
  * 带参构造方法,初始化SQLiteDatabase。 
  * @param sqLiteDatabase SQLiteDatabase实例 
  */ 
 public DemoDBUtil(SQLiteDatabase sqLiteDatabase){ 
  this.sqLiteDatabase = sqLiteDatabase; 
 } 
  
 /** 
  * 增加数据。 
  * @param uid 要新增的uid 
  */ 
 public void add(String uid){ 
  ContentValues values = new ContentValues(); 
  values.put("uid", uid); 
  sqLiteDatabase.insert(DEMO_DB_NAME, null, values); 
 } 
  
 /** 
  * 删除表里所有数据。 
  */ 
 public void delete(){ 
  sqLiteDatabase.delete(DEMO_DB_NAME, null, null); 
 } 
  
 /** 
  * 删除表里与uid对应的数据。 
  * @param uid 某个uid 
  */ 
 public void delete(String uid){ 
  sqLiteDatabase.delete(DEMO_DB_NAME, "uid = ? ", new String[]{uid}); 
 } 
  
 /** 
  * 更新表,将表所有uid替换为newUid。 
  */ 
 public void update(){ 
  ContentValues values = new ContentValues(); 
  values.put("uid", "newUid"); 
  sqLiteDatabase.update(DEMO_DB_NAME, values, null, null); 
 } 
  
 /** 
  * 将表里对应的uid替换为newUid。 
  * @param uid 表里的某个uid 
  */ 
 public void update(String uid){ 
  ContentValues values = new ContentValues(); 
  values.put("uid", "newUid"); 
  sqLiteDatabase.update(DEMO_DB_NAME, values, "uid = ? ", new String[]{uid}); 
 } 
  
 /** 
  * 查询表里所有数据,取得uid对应的值。 
  */ 
 public void query(){ 
  Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, null, null, null, null, null); 
  while (cursor.moveToNext()) { 
   String uid = cursor.getString(cursor.getColumnIndex("uid")); 
  } 
  if (null != cursor) { 
   cursor.close(); 
  } 
 } 
  
 /** 
  * 取得对应uid的值。 
  * @param uid 表里的某个uid 
  */ 
 public void query(String uid){ 
  Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, "uid = ? ", new String[]{uid}, null, null, null); 
  while (cursor.moveToNext()) { 
   String queryUid = cursor.getString(cursor.getColumnIndex("uid")); 
  } 
  if (null != cursor) { 
   cursor.close(); 
  } 
 } 
  
 /** 
  * 取得最后一条记录。 
  */ 
 public void queryLastRecord(){ 
  String lastTimeSql = "select * from demo_db_name order by id desc LIMIT 1"; 
  Cursor cursor = sqLiteDatabase.rawQuery(lastTimeSql, null); 
  while (cursor.moveToNext()) { 
   String queryUid = cursor.getString(cursor.getColumnIndex("uid")); 
  } 
  if (null != cursor) { 
   cursor.close(); 
  } 
 } 
} 

上文主要是针对表的一个简单的增删改查的操作,可以根据实际情况修改来满足项目的需要。

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持。


推荐阅读
  • Android 手机安全应用首屏布局设计
    本文详细介绍了如何构建一个功能丰富的手机安全应用的首个导航界面布局。通过实例代码和效果展示,帮助开发者快速理解和实现相关功能。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • SQL注入实验:SqliLabs第38至45关解析
    本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(Stacked Queries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。 ... [详细]
  • 解决fetch上传图片至微信公众号H5页面的问题
    在近期的一个项目需求中,需要在微信公众号内嵌入H5页面,并实现用户通过该页面上传图片的功能,包括拍摄新照片或从已有相册中选择。前端开发中采用了fetch API进行接口调用,但遇到了上传图片时数据无法正确传递的问题。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 本文详细介绍了MySQL中的存储程序概念及其分类,包括存储过程、存储函数、触发器和事件等,每种类型的特点及应用场景,并提供了创建、调用、删除和查看的方法。此外,还对比了存储过程与存储函数的主要区别,帮助读者更好地理解和应用这些数据库特性。 ... [详细]
  • 本文详细介绍了 SQL 中的 CHECK 约束,包括其作用、如何在创建表和修改表时应用 CHECK 约束,以及如何删除 CHECK 约束。CHECK 约束用于确保数据库中的数据符合预定义的条件,从而提高数据的完整性和可靠性。 ... [详细]
  • 在使用如新浪微博和腾讯微博等平台的Python API时,发现了一种将字典转换为函数参数的有效方法,即通过在字典前添加双星号(*)来实现动态变量的传递。这种方法不仅提高了代码的灵活性,也简化了API调用过程。 ... [详细]
  • CentOS系统下设置JDK环境变量的方法
    本文将详细介绍如何在CentOS系统中为root用户配置JDK环境变量。包括JDK的安装路径设定、环境变量的添加及验证方法。 ... [详细]
  • 基于函数实现的进制转换工具
    本文介绍了一种利用函数实现不同进制数(二进制、八进制、十进制)之间转换的方法。包括了程序的运行效果展示、所使用的主要函数解析、以及如何验证用户输入的合法性。整个项目仅使用了两个全局变量来存储用户的选项和输入的数值。 ... [详细]
  • 本文探讨了在执行SQL查询时遇到的因字符集不同而导致查询结果差异的问题,特别是涉及中文字符时。文章分析了在不同字符集设置下,SQL查询结果的变化,并提供了详细的解决方案。 ... [详细]
  • 应用程序配置详解
    本文介绍了配置文件的关键特性及其在不同场景下的应用,重点探讨了Machine.Config和Web.Config两种主要配置文件的用途和配置方法。文章还详细解释了如何利用XML格式的配置文件来调整应用程序的行为,包括自定义配置、错误处理、身份验证和授权设置。 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
author-avatar
phpxiaohui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有