MiniTwitter记住密码等功能实现
来源:互联网 发布:贫穷与犯罪率数据 编辑:程序博客网 时间:2024/06/05 18:32
这篇文章主要介绍利用安卓的数据库(sqlite)来保存用户的账号和密码的功能
实体类:UserInfo.java
package my.db;import java.io.Serializable;import android.graphics.drawable.Drawable;public class UserInfo implements Serializable { public static final String USERNAME = "userName"; public static final String PASSWORD = "passWord"; private String userName; private Drawable passWord; //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{ <pre name="code" class="java">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 = "bzu.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; } }
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. USERNAME+ " varchar,"+ UserInfo. PASSWORD+ " 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(); } }}
xml代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/passWord" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/userName" android:inputType="textPassword" android:layout_marginTop="34dp" android:ems="10" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/passWord" android:layout_centerHorizontal="true" android:layout_marginTop="45dp" android:text="登陆" /> <EditText android:id="@+id/userName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="24dp" android:ems="10" > <requestFocus /> </EditText></RelativeLayout>
0 0
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码等功能实现
- MiniTwitter记住密码功能实现
- MiniTwitter登录界面记住密码功能
- android中 MiniTwitter 实现记住密码
- 实现记住密码功能
- Android 实现登录界面 记住账号密码等功能
- MiniTwitter登入界面记住密码
- javaweb实现记住密码功能
- C#记住密码功能实现
- SharedPreference实现记住密码功能
- Android按钮单击事件的四种常用写法总结
- Oracle数据库备份与恢复
- Spring IOC-Servlet加载到bean工厂
- 底部弹出popWindow的动画
- java GC 栈(虚拟机栈,本地方法栈),堆(新生代、老年代), 方法区(永久带)等参数配置
- MiniTwitter记住密码等功能实现
- perl ? * + 和空格结合
- 大型网站架构体系的演变(上)
- 巴淡岛中文离线地图App上线
- 默认端口:ftp,ssh,telnet,dhcp,mail,pop3,smtp,dns,http,sm等
- 1. Two Sum
- 面试题3---二维数组中查找
- libsvm-3.12中的 README
- 模式 - 通知机制