Android数据库操作类实例
实体类:UserInfo.java

package my.db; 

 
 
 
 
 
 import java.io.Serializable; 

 
 
 
 
 
 import android.graphics.drawable.Drawable; 

 
 
 
 
 
 public class  
 UserInfo  
 implements Serializable { 

 
 
 
 

        
 public static final String  
 ID = "_id"; 

 

        
 public static final String  
 USERID = "userId"; 

 

        
 public static final String  
 TOKEN = "token"; 

 

        
 public static final String  
 TOKENSECRET = "tokenSecret"; 

 

        
 public static final String  
 USERNAME = "userName"; 

 

        
 public static final String  
 USERICON = "userIcon"; 

 
 
 
 

        
 private String id; 

 

        
 private String userId; // 用户id 

 

        
 private String token; 

 

        
 private String tokenSecret; 

 

        
 private String userName; 

 

        
 private Drawable userIcon; 

 

       //getter and setter省略 

 

  } 

 

  SqliteHelper类: 

 
 
  package my.db; 
 
 
 
 
  
 
 
 
  import android.content.Context; 
 
 
 
 
  import android.database.sqlite.SQLiteDatabase; 
 
 
 
 
  import android.database.sqlite.SQLiteDatabase.CursorFactory; 
 
 
 
 
  import android.database.sqlite.SQLiteOpenHelper; 
 
 
 
 
  import android.util.Log; 
 
 
 
 
  
 
 
 
  public class SqliteHelper  
  extends SQLiteOpenHelper{ 
 
 
 

       //用来保存UserID、Access Token、Access Secret的表名 
 
 
 

        
  public static final String  
  TB_NAME= "users"; 
 
 
 

        
  public SqliteHelper(Context context, String name, CursorFactory factory,  
  int version) { 
 
 
 

            
  super(context, name, factory, version); 
 
 
 

       } 
 
 
 

       //创建表 
 
 
 

       @Override 
 
 
 

        
  public void onCreate(SQLiteDatabase db) { 
 
 
 

           db.execSQL( "CREATE TABLE IF NOT EXISTS "+ 
 
 
 

                    
  TB_NAME+ "("+ 
 
 
 

                   UserInfo.  
  ID+ " integer primary key,"+ 
 
 
 

                   UserInfo.  
  USERID+ " varchar,"+ 
 
 
 

                   UserInfo.  
  TOKEN+ " varchar,"+ 
 
 
 

                   UserInfo.  
  TOKENSECRET+ " varchar,"+ 
 
 
 

                   UserInfo.  
  USERNAME+ " varchar,"+ 
 
 
 

                   UserInfo.  
  USERICON+ " blob"+ 
 
 
 

                   ")" 
 
 
 

                   ); 
 
 
 

           Log.  
  e("Database" ,"onCreate" ); 
 
 
 

       } 
 
 
 

       //更新表 
 
 
 

       @Override 
 
 
 

        
  public void onUpgrade(SQLiteDatabase db,  
  int oldVersion,  
  int newVersion) { 
 
 
 

           db.execSQL( "DROP TABLE IF EXISTS " +  
  TB_NAME ); 
 
 
 

           onCreate(db); 
 
 
 

           Log.  
  e("Database" ,"onUpgrade" ); 
 
 
 

       } 
 
 
 

       //更新列 
 
 
 

        
  public void updateColumn(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn){ 
 
 
 

            
  try{ 
 
 
 

               db.execSQL( "ALTER TABLE " + 
 
 
 

                        
  TB_NAME + " CHANGE " + 
 
 
 

                       oldColumn + " "+ newColumn + 
 
 
 

                       " " + typeColumn 
 
 
 

               ); 
 
 
 

           }  
  catch(Exception e){ 
 
 
 

               e.printStackTrace(); 
 
 
 

           } 
 
 
 

       } 
 
 
 

   } 
 
 
 
 CRUD类DataHelper: 

 
 
 package my.db; 

 
 
 
 
 
 import java.io.ByteArrayInputStream; 

 
 
 import java.io.ByteArrayOutputStream; 

 
 
 import java.util.ArrayList; 

 
 
 import java.util.List; 

 
 
 
 
 
 import android.content.ContentValues; 

 
 
 import android.content.Context; 

 
 
 import android.database.Cursor; 

 
 
 import android.database.sqlite.SQLiteDatabase; 

 
 
 import android.graphics.Bitmap; 

 
 
 import android.graphics.drawable.Drawable; 

 
 
 import android.util.Log; 

 
 
 
 
 
 public class DataHelper { 

 

       // 数据库名称 

 

        
 private static String  
 DB_NAME = "weibo.db"; 

 

       // 数据库版本 

 

        
 private static int  
 DB_VERSION = 2; 

 

        
 private SQLiteDatabase db; 

 

        
 private SqliteHelper dbHelper; 

 
 
 
 

        
 public DataHelper(Context context) { 

 

             dbHelper =  
 new SqliteHelper(context,  
 DB_NAME,  
 null,  
 DB_VERSION ); 

 

             db = dbHelper.getWritableDatabase(); 

 

       } 

 
 
 
 

        
 public void Close() { 

 

             db.close(); 

 

             dbHelper.close(); 

 

       } 

 
 
 
 

       // 获取users表中的UserID、Access Token、Access Secret的记录 

 

        
 public List<UserInfo> GetUserList(Boolean isSimple) { 

 

            List<UserInfo> userList =  
 new ArrayList<UserInfo>(); 

 

            Cursor cursor = db.query(SqliteHelper.  
 TB_NAME,  
 null,  
 null ,  
 null,  
 null, 

 

                       
 null, UserInfo.  
 ID + " DESC"); 

 

            cursor.moveToFirst(); 

 

              
 while (!cursor.isAfterLast() && (cursor.getString(1) !=  
 null )) { 

 

                UserInfo user =  
 new UserInfo(); 

 

                user.setId(cursor.getString(0)); 

 

                user.setUserId(cursor.getString(1)); 

 

                user.setToken(cursor.getString(2)); 

 

                user.setTokenSecret(cursor.getString(3)); 

 

                  
 if (!isSimple) { 

 

                     user.setUserName(cursor.getString(4)); 

 

                     ByteArrayInputStream stream =  
 new ByteArrayInputStream(cursor.getBlob(5)); 

 

                     Drawable icon = Drawable. 
 createFromStream(stream, "image"); 

 

                     user.setUserIcon(icon); 

 

                } 

 

                userList.add(user); 

 

                cursor.moveToNext(); 

 

            } 

 

            cursor.close(); 

 

              
 return userList; 

 

       } 

 
 
 
 

       // 判断users表中的是否包含某个UserID的记录 

 

        
 public Boolean HaveUserInfo(String UserId) { 

 

            Boolean b =  
 false; 

 

            Cursor cursor = db.query(SqliteHelper.  
 TB_NAME,  
 null, UserInfo. 
 USERID 

 

                     + "=?",  
 new String[]{UserId},  
 null,  
 null,  
 null ); 

 

            b = cursor.moveToFirst(); 

 

            Log.  
 e("HaveUserInfo", b.toString()); 

 

            cursor.close(); 

 

              
 return b; 

 

       } 

 
 
 
 

       // 更新users表的记录,根据UserId更新用户昵称和用户图标 

 

        
 public int UpdateUserInfo(String userName, Bitmap userIcon, String UserId) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERNAME, userName); 

 

             // BLOB类型 

 

              
 final ByteArrayOutputStream os =  
 new ByteArrayOutputStream(); 

 

             // 将Bitmap压缩成PNG编码,质量为100%存储 

 

            userIcon.compress(Bitmap.CompressFormat.  
 PNG, 100, os); 

 

             // 构造SQLite的Content对象,这里也可以使用raw 

 

            values.put(UserInfo.  
 USERICON, os.toByteArray()); 

 

              
 int id = db.update(SqliteHelper.  
 TB_NAME, values, UserInfo. 
 USERID + "=?" ,  
 new String[]{UserId}); 

 

            Log.  
 e("UpdateUserInfo2", id + ""); 

 

              
 return id; 

 

       } 

 
 
 
 

       // 更新users表的记录 

 

        
 public int UpdateUserInfo(UserInfo user) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

              
 int id = db.update(SqliteHelper.  
 TB_NAME, values, UserInfo. 
 USERID + "=" 

 

                     + user.getUserId(),  
 null); 

 

            Log.  
 e("UpdateUserInfo", id + ""); 

 

              
 return id; 

 

       } 

 
 
 
 

       // 添加users表的记录 

 

        
 public Long SaveUserInfo(UserInfo user) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

            Long uid = db.insert(SqliteHelper.  
 TB_NAME, UserInfo. 
 ID, values); 

 

            Log.  
 e("SaveUserInfo", uid + ""); 

 

              
 return uid; 

 

       } 

 

        

 

       // 添加users表的记录 

 

        
 public Long SaveUserInfo(UserInfo user,  
 byte[] icon) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 USERNAME, user.getUserName()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

              
 if(icon!=  
 null){ 

 

                values.put(UserInfo.  
 USERICON, icon); 

 

            } 

 

            Long uid = db.insert(SqliteHelper.  
 TB_NAME, UserInfo. 
 ID, values); 

 

            Log.  
 e("SaveUserInfo", uid + ""); 

 

              
 return uid; 

 

       } 

 
 
 
 

       // 删除users表的记录 

 

        
 public int DelUserInfo(String UserId) { 

 

              
 int id = db.delete(SqliteHelper.  
 TB_NAME, 

 

                     UserInfo.  
 USERID + "=?",  
 new String[]{UserId}); 

 

            Log.  
 e("DelUserInfo", id + ""); 

 

              
 return id; 

 

       } 

 

        

 

        
 public static UserInfo getUserByName(String userName,List<UserInfo> userList){ 

 

            UserInfo userInfo =  
 null; 

 

              
 int size = userList.size(); 

 

              
 for(  
 int i=0;i<size;i++){ 

 

                   
 if(userName.equals(userList.get(i).getUserName())){
package my.db; 

 
 
 
 
 
 import java.io.Serializable; 

 
 
 
 
 
 import android.graphics.drawable.Drawable; 

 
 
 
 
 
 public class  
 UserInfo  
 implements Serializable { 

 
 
 
 

        
 public static final String  
 ID = "_id"; 

 

        
 public static final String  
 USERID = "userId"; 

 

        
 public static final String  
 TOKEN = "token"; 

 

        
 public static final String  
 TOKENSECRET = "tokenSecret"; 

 

        
 public static final String  
 USERNAME = "userName"; 

 

        
 public static final String  
 USERICON = "userIcon"; 

 
 
 
 

        
 private String id; 

 

        
 private String userId; // 用户id 

 

        
 private String token; 

 

        
 private String tokenSecret; 

 

        
 private String userName; 

 

        
 private Drawable userIcon; 

 

       //getter and setter省略 

 

  } 

 

  SqliteHelper类: 

 
 
  package my.db; 
 
 
 
 
  
 
 
 
  import android.content.Context; 
 
 
 
 
  import android.database.sqlite.SQLiteDatabase; 
 
 
 
 
  import android.database.sqlite.SQLiteDatabase.CursorFactory; 
 
 
 
 
  import android.database.sqlite.SQLiteOpenHelper; 
 
 
 
 
  import android.util.Log; 
 
 
 
 
  
 
 
 
  public class SqliteHelper  
  extends SQLiteOpenHelper{ 
 
 
 

       //用来保存UserID、Access Token、Access Secret的表名 
 
 
 

        
  public static final String  
  TB_NAME= "users"; 
 
 
 

        
  public SqliteHelper(Context context, String name, CursorFactory factory,  
  int version) { 
 
 
 

            
  super(context, name, factory, version); 
 
 
 

       } 
 
 
 

       //创建表 
 
 
 

       @Override 
 
 
 

        
  public void onCreate(SQLiteDatabase db) { 
 
 
 

           db.execSQL( "CREATE TABLE IF NOT EXISTS "+ 
 
 
 

                    
  TB_NAME+ "("+ 
 
 
 

                   UserInfo.  
  ID+ " integer primary key,"+ 
 
 
 

                   UserInfo.  
  USERID+ " varchar,"+ 
 
 
 

                   UserInfo.  
  TOKEN+ " varchar,"+ 
 
 
 

                   UserInfo.  
  TOKENSECRET+ " varchar,"+ 
 
 
 

                   UserInfo.  
  USERNAME+ " varchar,"+ 
 
 
 

                   UserInfo.  
  USERICON+ " blob"+ 
 
 
 

                   ")" 
 
 
 

                   ); 
 
 
 

           Log.  
  e("Database" ,"onCreate" ); 
 
 
 

       } 
 
 
 

       //更新表 
 
 
 

       @Override 
 
 
 

        
  public void onUpgrade(SQLiteDatabase db,  
  int oldVersion,  
  int newVersion) { 
 
 
 

           db.execSQL( "DROP TABLE IF EXISTS " +  
  TB_NAME ); 
 
 
 

           onCreate(db); 
 
 
 

           Log.  
  e("Database" ,"onUpgrade" ); 
 
 
 

       } 
 
 
 

       //更新列 
 
 
 

        
  public void updateColumn(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn){ 
 
 
 

            
  try{ 
 
 
 

               db.execSQL( "ALTER TABLE " + 
 
 
 

                        
  TB_NAME + " CHANGE " + 
 
 
 

                       oldColumn + " "+ newColumn + 
 
 
 

                       " " + typeColumn 
 
 
 

               ); 
 
 
 

           }  
  catch(Exception e){ 
 
 
 

               e.printStackTrace(); 
 
 
 

           } 
 
 
 

       } 
 
 
 

   } 
 
 
 
 CRUD类DataHelper: 

 
 
 package my.db; 

 
 
 
 
 
 import java.io.ByteArrayInputStream; 

 
 
 import java.io.ByteArrayOutputStream; 

 
 
 import java.util.ArrayList; 

 
 
 import java.util.List; 

 
 
 
 
 
 import android.content.ContentValues; 

 
 
 import android.content.Context; 

 
 
 import android.database.Cursor; 

 
 
 import android.database.sqlite.SQLiteDatabase; 

 
 
 import android.graphics.Bitmap; 

 
 
 import android.graphics.drawable.Drawable; 

 
 
 import android.util.Log; 

 
 
 
 
 
 public class DataHelper { 

 

       // 数据库名称 

 

        
 private static String  
 DB_NAME = "weibo.db"; 

 

       // 数据库版本 

 

        
 private static int  
 DB_VERSION = 2; 

 

        
 private SQLiteDatabase db; 

 

        
 private SqliteHelper dbHelper; 

 
 
 
 

        
 public DataHelper(Context context) { 

 

             dbHelper =  
 new SqliteHelper(context,  
 DB_NAME,  
 null,  
 DB_VERSION ); 

 

             db = dbHelper.getWritableDatabase(); 

 

       } 

 
 
 
 

        
 public void Close() { 

 

             db.close(); 

 

             dbHelper.close(); 

 

       } 

 
 
 
 

       // 获取users表中的UserID、Access Token、Access Secret的记录 

 

        
 public List<UserInfo> GetUserList(Boolean isSimple) { 

 

            List<UserInfo> userList =  
 new ArrayList<UserInfo>(); 

 

            Cursor cursor = db.query(SqliteHelper.  
 TB_NAME,  
 null,  
 null ,  
 null,  
 null, 

 

                       
 null, UserInfo.  
 ID + " DESC"); 

 

            cursor.moveToFirst(); 

 

              
 while (!cursor.isAfterLast() && (cursor.getString(1) !=  
 null )) { 

 

                UserInfo user =  
 new UserInfo(); 

 

                user.setId(cursor.getString(0)); 

 

                user.setUserId(cursor.getString(1)); 

 

                user.setToken(cursor.getString(2)); 

 

                user.setTokenSecret(cursor.getString(3)); 

 

                  
 if (!isSimple) { 

 

                     user.setUserName(cursor.getString(4)); 

 

                     ByteArrayInputStream stream =  
 new ByteArrayInputStream(cursor.getBlob(5)); 

 

                     Drawable icon = Drawable. 
 createFromStream(stream, "image"); 

 

                     user.setUserIcon(icon); 

 

                } 

 

                userList.add(user); 

 

                cursor.moveToNext(); 

 

            } 

 

            cursor.close(); 

 

              
 return userList; 

 

       } 

 
 
 
 

       // 判断users表中的是否包含某个UserID的记录 

 

        
 public Boolean HaveUserInfo(String UserId) { 

 

            Boolean b =  
 false; 

 

            Cursor cursor = db.query(SqliteHelper.  
 TB_NAME,  
 null, UserInfo. 
 USERID 

 

                     + "=?",  
 new String[]{UserId},  
 null,  
 null,  
 null ); 

 

            b = cursor.moveToFirst(); 

 

            Log.  
 e("HaveUserInfo", b.toString()); 

 

            cursor.close(); 

 

              
 return b; 

 

       } 

 
 
 
 

       // 更新users表的记录,根据UserId更新用户昵称和用户图标 

 

        
 public int UpdateUserInfo(String userName, Bitmap userIcon, String UserId) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERNAME, userName); 

 

             // BLOB类型 

 

              
 final ByteArrayOutputStream os =  
 new ByteArrayOutputStream(); 

 

             // 将Bitmap压缩成PNG编码,质量为100%存储 

 

            userIcon.compress(Bitmap.CompressFormat.  
 PNG, 100, os); 

 

             // 构造SQLite的Content对象,这里也可以使用raw 

 

            values.put(UserInfo.  
 USERICON, os.toByteArray()); 

 

              
 int id = db.update(SqliteHelper.  
 TB_NAME, values, UserInfo. 
 USERID + "=?" ,  
 new String[]{UserId}); 

 

            Log.  
 e("UpdateUserInfo2", id + ""); 

 

              
 return id; 

 

       } 

 
 
 
 

       // 更新users表的记录 

 

        
 public int UpdateUserInfo(UserInfo user) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

              
 int id = db.update(SqliteHelper.  
 TB_NAME, values, UserInfo. 
 USERID + "=" 

 

                     + user.getUserId(),  
 null); 

 

            Log.  
 e("UpdateUserInfo", id + ""); 

 

              
 return id; 

 

       } 

 
 
 
 

       // 添加users表的记录 

 

        
 public Long SaveUserInfo(UserInfo user) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

            Long uid = db.insert(SqliteHelper.  
 TB_NAME, UserInfo. 
 ID, values); 

 

            Log.  
 e("SaveUserInfo", uid + ""); 

 

              
 return uid; 

 

       } 

 

        

 

       // 添加users表的记录 

 

        
 public Long SaveUserInfo(UserInfo user,  
 byte[] icon) { 

 

            ContentValues values =  
 new ContentValues(); 

 

            values.put(UserInfo.  
 USERID, user.getUserId()); 

 

            values.put(UserInfo.  
 USERNAME, user.getUserName()); 

 

            values.put(UserInfo.  
 TOKEN, user.getToken()); 

 

            values.put(UserInfo.  
 TOKENSECRET, user.getTokenSecret()); 

 

              
 if(icon!=  
 null){ 

 

                values.put(UserInfo.  
 USERICON, icon); 

 

            } 

 

            Long uid = db.insert(SqliteHelper.  
 TB_NAME, UserInfo. 
 ID, values); 

 

            Log.  
 e("SaveUserInfo", uid + ""); 

 

              
 return uid; 

 

       } 

 
 
 
 

       // 删除users表的记录 

 

        
 public int DelUserInfo(String UserId) { 

 

              
 int id = db.delete(SqliteHelper.  
 TB_NAME, 

 

                     UserInfo.  
 USERID + "=?",  
 new String[]{UserId}); 

 

            Log.  
 e("DelUserInfo", id + ""); 

 

              
 return id; 

 

       } 

 

        

 

        
 public static UserInfo getUserByName(String userName,List<UserInfo> userList){ 

 

            UserInfo userInfo =  
 null; 

 

              
 int size = userList.size(); 

 

              
 for(  
 int i=0;i<size;i++){ 

 

                   
 if(userName.equals(userList.get(i).getUserName())){

                   userInfo = userList.get(i);


                     break;


              }


          }


            return userInfo;


     }    


}