1. 程式人生 > >Android資料庫操作類 增加、刪除、修改

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_NAMEnullDB_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_NAMEnullnull , nullnull,                     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_NAMEnull, UserInfo.USERID                    + "=?", new String[]{UserId}, nullnullnull );           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();            forint i=0;i<size;i++){                 if(userName.equals(userList.get(i).getUserName())){                    userInfo = userList.get(i);                     break;               }           }            return userInfo;      }     }