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 ; //getterandsetter省略 } SqliteHelper类: packagemy.db; importandroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteDatabase.CursorFactory; importandroid.database.sqlite.SQLiteOpenHelper; importandroid.util.Log; publicclassSqliteHelperextendsSQLiteOpenHelper{ //用来保存UserID、AccessToken、AccessSecret的表名 publicstaticfinalStringTB_NAME="users"; publicSqliteHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){ super(context,name,factory,version); } //创建表 @Override publicvoidonCreate(SQLiteDatabasedb){ db.execSQL("CREATETABLEIFNOTEXISTS"+ TB_NAME+"("+ UserInfo.ID+"integerprimarykey,"+ UserInfo.USERID+"varchar,"+ UserInfo.TOKEN+"varchar,"+ UserInfo.TOKENSECRET+"varchar,"+ UserInfo.USERNAME+"varchar,"+ UserInfo.USERICON+"blob"+ ")" ); Log.e("Database","onCreate"); } //更新表 @Override publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ db.execSQL("DROPTABLEIFEXISTS"+TB_NAME); onCreate(db); Log.e("Database","onUpgrade"); } //更新列 publicvoidupdateColumn(SQLiteDatabasedb,StringoldColumn,StringnewColumn,StringtypeColumn){ try{ db.execSQL("ALTERTABLE"+ TB_NAME+"CHANGE"+ oldColumn+""+newColumn+ ""+typeColumn ); }catch(Exceptione){ 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(Contextcontext){ dbHelper = new SqliteHelper(context, DB_NAME , null , DB_VERSION ); db = dbHelper .getWritableDatabase(); } public void Close(){ db .close(); dbHelper .close(); } //获取users表中的UserID、AccessToken、AccessSecret的记录 public List<UserInfo>GetUserList(BooleanisSimple){ List<UserInfo>userList= new ArrayList<UserInfo>(); Cursorcursor= db .query(SqliteHelper. TB_NAME , null , null , null , null , null ,UserInfo. ID + "DESC" ); cursor.moveToFirst(); while (!cursor.isAfterLast()&&(cursor.getString(1)!= null )){ UserInfouser= 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)); ByteArrayInputStreamstream= new ByteArrayInputStream(cursor.getBlob(5)); Drawableicon=Drawable.createFromStream(stream, "image" ); user.setUserIcon(icon); } userList.add(user); cursor.moveToNext(); } cursor.close(); return userList; } //判断users表中的是否包含某个UserID的记录 public BooleanHaveUserInfo(StringUserId){ Booleanb= false ; Cursorcursor= 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(StringuserName,BitmapuserIcon,StringUserId){ ContentValuesvalues= new ContentValues(); values.put(UserInfo. USERNAME ,userName); //BLOB类型 final ByteArrayOutputStreamos= 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(UserInfouser){ ContentValuesvalues= 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 LongSaveUserInfo(UserInfouser){ ContentValuesvalues= new ContentValues(); values.put(UserInfo. USERID ,user.getUserId()); values.put(UserInfo. TOKEN ,user.getToken()); values.put(UserInfo. TOKENSECRET ,user.getTokenSecret()); Longuid= db .insert(SqliteHelper. TB_NAME ,UserInfo. ID ,values); Log.e( "SaveUserInfo" ,uid+ "" ); return uid; } //添加users表的记录 public LongSaveUserInfo(UserInfouser, byte []icon){ ContentValuesvalues= 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); } Longuid= db .insert(SqliteHelper. TB_NAME ,UserInfo. ID ,values); Log.e( "SaveUserInfo" ,uid+ "" ); return uid; } //删除users表的记录 public int DelUserInfo(StringUserId){ int id= db .delete(SqliteHelper. TB_NAME , UserInfo. USERID + "=?" , new String[]{UserId}); Log.e( "DelUserInfo" ,id+ "" ); return id; } public static UserInfogetUserByName(StringuserName,List<UserInfo>userList){ UserInfouserInfo= 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; } }

更多相关文章

  1. Android之数据库
  2. android使用notifyDataSetChanged()方法,adapter的数据更新了,但是
  3. Android(安卓)技巧:命令行运行 sqlite3
  4. Android(安卓)检查版本更新 Server后台下载
  5. Android系统源码数据库(mmssms.db)
  6. Android(安卓)数据存储之SQLite数据库
  7. 我的Android使用openCV记录(2)
  8. Android(安卓)MIME类型结构
  9. Android(安卓)获取通话记录和短信内容

随机推荐

  1. 面试必知必会|理解C++虚函数
  2. 白话布隆过滤器BloomFilter
  3. 福布斯系列之数据清洗(2) | Python数据分析
  4. PyCharm:2017.3版即将新增科学计算模式,预
  5. Python内置OS模块用法详解
  6. 51CTO学员原创---2020年,我的PMP之路
  7. # 读 Android(安卓)开发艺术探索 &8
  8. 动画:如何给面试官写一个满意的冒泡排序
  9. 福布斯系列之数据清洗(3) | Python数据分析
  10. 福布斯系列之数据清洗(5) | Python数据分析