Android 如何对sqlite数据库进行增删改[insert、update和delete] 操作

在android开发中,我们常常用sqlite来存储用户信息,如何进行sqlite常规操作呢,请参阅下面的示例代码:

Plain代码
  1. package com.db.imgfornote;  
  2.   
  3. import android.content.ContentValues;  
  4. import android.content.Context;  
  5. import android.database.Cursor;  
  6. import android.database.sqlite.SQLiteDatabase;  
  7. import android.database.sqlite.SQLiteDatabase.CursorFactory;  
  8. import android.database.sqlite.SQLiteOpenHelper;  
  9. import android.util.Log;  
  10.   
  11. public class DBHelper extends SQLiteOpenHelper {  
  12.     final private static String mDbName="imgfornote" ;  
  13.     final private static int mDbVersion=1 ;  
  14.     private static DBHelper mInstance=null;  
  15.     private final static String mTUserPhoto="UserPhoto" ;  
  16.     final private static String mCreateSqlForNoteClass="create table if not exists NoteClass(classId integer primary key asc autoincrement,className NVARCHAR(100),rowTime timestamp default (datetime('now', 'localtime')))" ;  
  17.     final private static String mCreateSqlForUserPhoto="create table if not exists UserPhoto(photoId integer primary key asc autoincrement,photoName VARCHAR(200),userPt VARCHAR(200),title VARCHAR(255),classId integer,content NVARCHAR(250),tag NVARCHAR(200),remark text,status integer default 0,rowTime timestamp default (datetime('now', 'localtime')))" ;  
  18.     final private static String[] mInsertSqlForNoteClass={"insert into NoteClass(className) values('默认分类[私有]');" , "insert into NoteClass(className) values('读书笔记[私有]');" , "insert into NoteClass(className) values('电子资料[公开]');" };  
  19.     private DBHelper(Context context, CursorFactory factory) {  
  20.         super(context, mDbName, factory, mDbVersion);     
  21.     }  
  22.       
  23.     public static DBHelper GetInstance(Context context, SQLiteDatabase.CursorFactory factory)  
  24.     {  
  25.         if(mInstance==null){  
  26.             mInstance = new DBHelper(context,factory);    
  27.         }  
  28.         return mInstance;  
  29.     }  
  30.   
  31.     @Override  
  32.     public void onCreate(SQLiteDatabase db) {  
  33.         // 创建表  
  34.         db.execSQL(mCreateSqlForNoteClass);   
  35.         db.execSQL(mCreateSqlForUserPhoto);  
  36.         //初始化数据  
  37.         for(int i=0 ;i<mInsertSqlForNoteClass.length;i++)  
  38.             db.execSQL(mInsertSqlForNoteClass[i]);  
  39.     }  
  40.   
  41.     @Override  
  42.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  43.         // TODO Auto-generated method stub  
  44.   
  45.     }  
  46.       
  47.     private Cursor ExecSQLForCursor(String sql, String[] selectionArgs){  
  48.         SQLiteDatabase db =getWritableDatabase();  
  49.         Log.i("ExecSQLForCursor" ,sql);  
  50.         return db.rawQuery(sql, selectionArgs);  
  51.     }  
  52.     private void ExecSQL(String sql){  
  53.         try{  
  54.             SQLiteDatabase db =getWritableDatabase();  
  55.             ExecSQL(sql,db);  
  56.         }catch(Exception e){  
  57.             Log.e("ExecSQL Exception" ,e.getMessage());  
  58.                     e.printStackTrace();  
  59.         }  
  60.     }  
  61.     private void ExecSQL(String sql,SQLiteDatabase db ){  
  62.     try{  
  63.             db.execSQL(sql);      
  64.             Log.i("ExecSQL" ,sql);  
  65.         }catch(Exception e){  
  66.             Log.e("ExecSQL Exception" ,e.getMessage());  
  67.                 e.printStackTrace();  
  68.         }  
  69.     }  
  70.     //添加照片信息  
  71.     public long InsertUserPhoto(String photoName,String title){  
  72.         SQLiteDatabase db =getWritableDatabase();  
  73.         ContentValues cv = new ContentValues();  
  74.         cv.put("photoName" , photoName);  
  75.         cv.put("title" , title);  
  76.         return db.insert(mTUserPhoto, null, cv);  
  77.     }  
  78.     //查询照片信息  
  79.     public Cursor SearchPhoto(int row,String sort){  
  80.         Cursor cur = null;  
  81.         try{  
  82.             String ord = (sort==null|| sort.toLowerCase().startsWith("a" ))? "asc" : "desc" ;  
  83.             String sql = "select * from UserPhoto order by photoId " +ord;  
  84.             String[] args = {String.valueOf(row)};  
  85.             if(row>0 ){  
  86.                 sql +=" limit ?" ;  
  87.             }else{  
  88.                 args=null;  
  89.             }  
  90.             cur = ExecSQLForCursor(sql,args);             
  91.         }catch (Exception e) {  
  92.             cur = null;  
  93.             Log.e("SearchPhoto Exception" ,e.getMessage());  
  94.             e.printStackTrace();  
  95.         }  
  96.         return cur;  
  97.     }     
  98.     //修改照片信息  
  99.     public int UpdateUserPhoto(int photoId,int classId,String title,String content, String tag){  
  100.         SQLiteDatabase db =getWritableDatabase();  
  101.         ContentValues cv = new ContentValues();  
  102.         cv.put("classId" , classId);  
  103.         cv.put("title" , title);  
  104.         cv.put("content" , content);  
  105.         cv.put("tag" , tag);  
  106.         String[] args = {String.valueOf(photoId)};  
  107.         return db.update(mTUserPhoto, cv, "photoId=?" ,args);                  
  108.     }  
  109.     //删除照片信息  
  110.     public int DeleteUserPhoto(int photoId){  
  111.         SQLiteDatabase db =getWritableDatabase();  
  112.         String[] args = {String.valueOf(photoId)};  
  113.         return db.delete(mTUserPhoto, "photoId=?" , args);  
  114.     }  
  115. }  


主要用到的类:SQLiteOpenHelper、SQLiteDatabase及ContentValues

猜你喜欢

转载自892848153.iteye.com/blog/1605637