Android 数据操作之SQLiteDatabase

来源:互联网 发布:网络交换机设置 编辑:程序博客网 时间:2024/06/06 02:30

  在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来对数据进行操作。

     本文主要是讲一些SQLLite的操作并附上代码。
     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。这样简单的数据类型设计更加符合嵌入式设备的要求。

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. import android.content.ContentValues;  
  2. import android.database.Cursor;  
  3. import android.database.sqlite.SQLiteDatabase;  
  4.   
  5. /** 
  6.  * 对表的增删改查的操作。这里的表里只有uid一列作为举例。 
  7.  */  
  8. public class DemoDBUtil {  
  9.   
  10.     //要操作的表名  
  11.     public static final String DEMO_DB_NAME = "demo_db_name";  
  12.     //SQLiteDatabase对象  
  13.     private SQLiteDatabase sqLiteDatabase;  
  14.       
  15.     /** 
  16.      * 带参构造方法,初始化SQLiteDatabase。 
  17.      * @param sqLiteDatabase SQLiteDatabase实例 
  18.      */  
  19.     public DemoDBUtil(SQLiteDatabase sqLiteDatabase){  
  20.         this.sqLiteDatabase = sqLiteDatabase;  
  21.     }  
  22.       
  23.     /** 
  24.      * 增加数据。 
  25.      * @param uid 要新增的uid 
  26.      */  
  27.     public void add(String uid){  
  28.         ContentValues values = new ContentValues();  
  29.         values.put("uid", uid);  
  30.         sqLiteDatabase.insert(DEMO_DB_NAME, null, values);  
  31.     }  
  32.       
  33.     /** 
  34.      * 删除表里所有数据。 
  35.      */  
  36.     public void delete(){  
  37.         sqLiteDatabase.delete(DEMO_DB_NAME, nullnull);  
  38.     }  
  39.       
  40.     /** 
  41.      * 删除表里与uid对应的数据。 
  42.      * @param uid 某个uid 
  43.      */  
  44.     public void delete(String uid){  
  45.         sqLiteDatabase.delete(DEMO_DB_NAME, "uid = ? "new String[]{uid});  
  46.     }  
  47.       
  48.     /** 
  49.      * 更新表,将表所有uid替换为newUid。 
  50.      */  
  51.     public void update(){  
  52.         ContentValues values = new ContentValues();  
  53.         values.put("uid""newUid");  
  54.         sqLiteDatabase.update(DEMO_DB_NAME, values, nullnull);  
  55.     }  
  56.       
  57.     /** 
  58.      * 将表里对应的uid替换为newUid。 
  59.      * @param uid 表里的某个uid 
  60.      */  
  61.     public void update(String uid){  
  62.         ContentValues values = new ContentValues();  
  63.         values.put("uid""newUid");  
  64.         sqLiteDatabase.update(DEMO_DB_NAME, values, "uid = ? "new String[]{uid});  
  65.     }  
  66.       
  67.     /** 
  68.      * 查询表里所有数据,取得uid对应的值。 
  69.      */  
  70.     public void query(){  
  71.         Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, nullnullnullnullnullnull);  
  72.         while (cursor.moveToNext()) {  
  73.             String uid = cursor.getString(cursor.getColumnIndex("uid"));  
  74.         }  
  75.         if (null != cursor) {  
  76.             cursor.close();  
  77.         }  
  78.     }  
  79.       
  80.     /** 
  81.      * 取得对应uid的值。 
  82.      * @param uid 表里的某个uid 
  83.      */  
  84.     public void query(String uid){  
  85.         Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null"uid = ? "new String[]{uid}, nullnullnull);  
  86.         while (cursor.moveToNext()) {  
  87.             String queryUid = cursor.getString(cursor.getColumnIndex("uid"));  
  88.         }  
  89.         if (null != cursor) {  
  90.             cursor.close();  
  91.         }  
  92.     }  
  93.       
  94.     /** 
  95.      * 取得最后一条记录。 
  96.      */  
  97.     public void queryLastRecord(){  
  98.         String lastTimeSql = "select * from demo_db_name order by id desc LIMIT 1";  
  99.         Cursor cursor = sqLiteDatabase.rawQuery(lastTimeSql, null);  
  100.         while (cursor.moveToNext()) {  
  101.             String queryUid = cursor.getString(cursor.getColumnIndex("uid"));  
  102.         }  
  103.         if (null != cursor) {  
  104.             cursor.close();  
  105.         }  
  106.     }  
  107. }  
     上文主要是针对表的一个简单的增删改查的操作,可以根据实际情况修改来满足项目的需要。
0 0