android-数据库操作实例,留着以后用

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())){
                   userInfo = userList.get(i);
                     break ;
              }
          }
            return  userInfo;
     }    
}

你可能感兴趣的:(android)