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的用户界面
  3. android 自定义通知消息设置背景色不生效,导致部分机型显示白色字
  4. Android 数据存储之SQLite数据库
  5. 查看android里的数据库的内容的方法
  6. (8 Android) 用户界面UI设计
  7. 【android】ORMLite框架 的使用方法---给你的数据库操作插上翅膀
  8. Android 系统数据库编程学习日志

随机推荐

  1. Android(安卓)onSaveInstanceState和onRe
  2. android开发之interpolator的用法详解
  3. 初学者之Android(安卓)HelloWorld项目
  4. Android(安卓)context源码详解及深入分析
  5. Android的两种数据存储方式分析(一)
  6. Android简单类型资源(Bool、Color、Dimens
  7. android jni介绍
  8. 解决Your content must have a ListView
  9. Android用户注册界面
  10. android TextView 不显示文字