欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-03 15:27:22
在android开发中经常要涉及到对数据的操作。android本身提供了四种数据存储方式。包括:sharepreference,sqlite,content provide...

在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(); 
  } 
 } 
} 

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

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