在android开发中,我们常常用sqlite来存储用户信息,如何进行sqlite常规操作呢,请参阅下面的示例代码:
- package com.db.imgfornote;
- import android.content.ContentValues;
- import android.content.Context;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteDatabase.CursorFactory;
- import android.database.sqlite.SQLiteOpenHelper;
- import android.util.Log;
- public class DBHelper extends SQLiteOpenHelper {
- final private static String mDbName="imgfornote" ;
- final private static int mDbVersion=1 ;
- private static DBHelper mInstance=null;
- private final static String mTUserPhoto="UserPhoto" ;
- 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')))" ;
- 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')))" ;
- final private static String[] mInsertSqlForNoteClass={"insert into NoteClass(className) values('默认分类[私有]');" , "insert into NoteClass(className) values('读书笔记[私有]');" , "insert into NoteClass(className) values('电子资料[公开]');" };
- private DBHelper(Context context, CursorFactory factory) {
- super(context, mDbName, factory, mDbVersion);
- }
- public static DBHelper GetInstance(Context context, SQLiteDatabase.CursorFactory factory)
- {
- if(mInstance==null){
- mInstance = new DBHelper(context,factory);
- }
- return mInstance;
- }
- @Override
- public void onCreate(SQLiteDatabase db) {
- // 创建表
- db.execSQL(mCreateSqlForNoteClass);
- db.execSQL(mCreateSqlForUserPhoto);
- //初始化数据
- for(int i=0 ;i<mInsertSqlForNoteClass.length;i++)
- db.execSQL(mInsertSqlForNoteClass[i]);
- }
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- // TODO Auto-generated method stub
- }
- private Cursor ExecSQLForCursor(String sql, String[] selectionArgs){
- SQLiteDatabase db =getWritableDatabase();
- Log.i("ExecSQLForCursor" ,sql);
- return db.rawQuery(sql, selectionArgs);
- }
- private void ExecSQL(String sql){
- try{
- SQLiteDatabase db =getWritableDatabase();
- ExecSQL(sql,db);
- }catch(Exception e){
- Log.e("ExecSQL Exception" ,e.getMessage());
- e.printStackTrace();
- }
- }
- private void ExecSQL(String sql,SQLiteDatabase db ){
- try{
- db.execSQL(sql);
- Log.i("ExecSQL" ,sql);
- }catch(Exception e){
- Log.e("ExecSQL Exception" ,e.getMessage());
- e.printStackTrace();
- }
- }
- //添加照片信息
- public long InsertUserPhoto(String photoName,String title){
- SQLiteDatabase db =getWritableDatabase();
- ContentValues cv = new ContentValues();
- cv.put("photoName" , photoName);
- cv.put("title" , title);
- return db.insert(mTUserPhoto, null, cv);
- }
- //查询照片信息
- public Cursor SearchPhoto(int row,String sort){
- Cursor cur = null;
- try{
- String ord = (sort==null|| sort.toLowerCase().startsWith("a" ))? "asc" : "desc" ;
- String sql = "select * from UserPhoto order by photoId " +ord;
- String[] args = {String.valueOf(row)};
- if(row>0 ){
- sql +=" limit ?" ;
- }else{
- args=null;
- }
- cur = ExecSQLForCursor(sql,args);
- }catch (Exception e) {
- cur = null;
- Log.e("SearchPhoto Exception" ,e.getMessage());
- e.printStackTrace();
- }
- return cur;
- }
- //修改照片信息
- public int UpdateUserPhoto(int photoId,int classId,String title,String content, String tag){
- SQLiteDatabase db =getWritableDatabase();
- ContentValues cv = new ContentValues();
- cv.put("classId" , classId);
- cv.put("title" , title);
- cv.put("content" , content);
- cv.put("tag" , tag);
- String[] args = {String.valueOf(photoId)};
- return db.update(mTUserPhoto, cv, "photoId=?" ,args);
- }
- //删除照片信息
- public int DeleteUserPhoto(int photoId){
- SQLiteDatabase db =getWritableDatabase();
- String[] args = {String.valueOf(photoId)};
- return db.delete(mTUserPhoto, "photoId=?" , args);
- }
- }
主要用到的类:SQLiteOpenHelper、SQLiteDatabase及ContentValues