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

 更新时间:2016年05月25日 14:55:31   作者:LoveLife  
这篇文章主要为大家详细介绍了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 Metro菜单实现思路及代码

    Android Metro菜单实现思路及代码

    在安卓平台上实现一下Metro菜单效果,之前有介绍过了,相信大家对此不会陌生了吧,感兴趣的朋友可以了解下哈
    2013-06-06
  • Android开启ADB网络调试方法

    Android开启ADB网络调试方法

    今天小编就为大家分享一篇Android开启ADB网络调试方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android 在其他线程中更新UI线程的解决方法

    Android 在其他线程中更新UI线程的解决方法

    本篇文章是对Android中在其他线程中更新UI线程的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Android使用socket进行二进制流数据传输

    Android使用socket进行二进制流数据传输

    这篇文章主要介绍了Android使用socket进行二进制流数据传输,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • Android 吸入动画效果实现分解

    Android 吸入动画效果实现分解

    如何在Android上面实现一个类似的效果。先看看我实现的效果图,我们利用了Canvas.drawBitmapMesh()方法,具体实现代码如下,感兴趣的朋友可以参考下哈
    2013-06-06
  • 详解Android v1、v2、v3签名(小结)

    详解Android v1、v2、v3签名(小结)

    这篇文章主要介绍了详解Android v1、v2、v3签名(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 详解android异步更新UI的几种方法

    详解android异步更新UI的几种方法

    本篇文章主要介绍了详解android异步更新UI的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Android实现电池管理系统

    Android实现电池管理系统

    这篇文章主要为大家详细介绍了Android实现电池管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Android利用Hero实现列表与详情页无缝切换动画

    Android利用Hero实现列表与详情页无缝切换动画

    本文我们将利用Hero动画实现一个简单案例:实现列表与详情页无缝切换动画,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-06-06
  • Android Bitmap的截取及状态栏的隐藏和显示功能

    Android Bitmap的截取及状态栏的隐藏和显示功能

    Bitmap是Android系统中的图像处理中最重要类之一。Bitmap可以获取图像文件信息,对图像进行剪切、旋转、缩放,压缩等操作,并可以以指定格式保存图像文件。这篇文章主要介绍了Android Bitmap的截取及状态栏的隐藏和显示功能,需要的朋友可以参考下
    2017-11-11

最新评论