热门标签 | 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 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
author-avatar
winnie198808616
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有