public classUserDataManager {private static final String TAG = "UserDataManager";private static final String DB_NAME = "Register.db";public static final String TABLE_NAME = "Registry";public static final String ID = "_id";public static final String USER_NAME = "name";public static final String USER_PWD = "pwd";public static final String USER_PHONE = "phone";public static final String USER_MAIL = "mail";public static final String USER_ADD = "address";private static final int DB_VERSION = 1; //版本号
private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME + " (" +ID + " integer primary key,"+USER_NAME+ " varchar," + USER_PWD + " varchar,"+ USER_PHONE + " varchar,"+USER_MAIL+ " varchar," + USER_ADD + " varchar" + ");";private Context mContext = null;private SQLiteDatabase mSQLiteDatabase = null;private DataBaseManagementHelper mDatabaseHelper = null;private static class DataBaseManagementHelper extendsSQLiteOpenHelper {
DataBaseManagementHelper(Context context) {super(context, DB_NAME, null, DB_VERSION);
}
@Overridepublic voidonCreate(SQLiteDatabase db) {//调用时间:数据库第一次创建时onCreate()方法会被调用
Log.i("调用测试", "OK");
Log.i(TAG,"db.getVersion()="+db.getVersion());
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");
db.execSQL(DB_CREATE);
Log.i(TAG,"db.execSQL(DB_CREATE)");
Log.i(TAG, DB_CREATE);
}
@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion) {//调用时间:如果DATABASE_VERSION值被改为别的数,系统发现现有数据库版本不同,即会调用onUpgrade
Log.i(TAG, "DataBaseManagementHelper onUpgrade");
db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME);
onCreate(db);
}
@Overridepublic voidonOpen(SQLiteDatabase db)
{super.onOpen(db);//每次打开数据库之后首先被执行Log.d(TAG,"DatabaseHelper onOpen");
}
}publicUserDataManager(Context context) {
mContext=context;
Log.i(TAG,"UserDataManager construction!");
}public void openDataBase() throwsSQLException {
mDatabaseHelper= newDataBaseManagementHelper(mContext);
mSQLiteDatabase=mDatabaseHelper.getWritableDatabase();
}public void closeDataBase() throwsSQLException {
mDatabaseHelper.close();
}public voidinsertUserData(UserData userData) {
String userName=userData.getUserName();
String userPwd=userData.getUserPwd();
String userPhone=userData.getUserPhone();
String userMail=userData.getUserMail();
String userAds=userData.getUserAds();
mSQLiteDatabase.beginTransaction();//开始事务
try{
mSQLiteDatabase.execSQL("INSERT INTO " + TABLE_NAME + " VALUES(null, ?, ?, ?, ?, ?)",newObject[] { userName,userPwd, userPhone, userMail, userAds });//带两个参数的execSQL()方法,采用占位符参数?,把参数值放在后面,顺序对应//一个参数的execSQL()方法中,用户输入特殊字符时需要转义//使用占位符有效区分了这种情况
mSQLiteDatabase.setTransactionSuccessful(); //设置事务成功完成
}finally{
mSQLiteDatabase.endTransaction();//结束事务
}
}/*** 更新整个注册表的用户信息
*@paramuserData 用户信息类
*@return
*/
public booleanupdateUserData(UserData userData) {int id =userData.getUserId();
String userName=userData.getUserName();
String userPwd=userData.getUserPwd();
String userPhone=userData.getUserPhone();
String userMail=userData.getUserMail();
String userAds=userData.getUserAds();
ContentValues values= newContentValues();
values.put(USER_NAME, userName);
values.put(USER_PWD, userPwd);
values.put(USER_PHONE, userPhone);
values.put(USER_MAIL, userMail);
values.put(USER_ADD, userAds);return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
}/*** query all persons, return cursor
*
*@returnCursor*/
publicCursor queryTheCursor()
{
Log.d(TAG,"DBManager --> queryTheCursor");
mSQLiteDatabase=mDatabaseHelper.getReadableDatabase();
Cursor c= mSQLiteDatabase.rawQuery("SELECT * FROM " + TABLE_NAME, null);returnc;
}/*** 通过ID号删除用户
*@paramid
*@return
*/
public boolean deleteUserData(intid) {return mSQLiteDatabase.delete(TABLE_NAME, ID + "=" + id, null) > 0;
}/*** 删除所有用户
*@return
*/
public booleandeleteAllUserDatas() {return mSQLiteDatabase.delete(TABLE_NAME, null, null) > 0;
}/*** 通过ID号更新用户表信息
*@paramcolumnName
*@paramid
*@paramcolumnValue
*@return
*/
public boolean updateUserDataById(String columnName, intid,
String columnValue) {
ContentValues values= newContentValues();
values.put(columnName, columnValue);return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
}/*** 通过用户名查找用户
*@paramuserName
*@return
*/
public intfindUserByName(String userName){
Log.i(TAG,"findUserByName");
Cursor mCursor=queryTheCursor();
String name;int result=0;while(mCursor.moveToNext()){
Log.i(TAG,"moveToNext");
name=mCursor.getString(mCursor.getColumnIndex(USER_NAME));
Log.i(TAG,"name="+name);if(name.equals(userName)){
result= 1;
Log.i(TAG,"findUserByName , result="+result);break;
}
}returnresult;
}/*** 通过用户名/电话/邮箱和密码查找用户
*@paramuserName
*@parampwd
*@return
*/
public intfindUserByNameAndPwd(String userName,String pwd){
Log.i(TAG,"findUserByNameAndPwd()");
Cursor mCursor=queryTheCursor();
String name,password,phone,mail;int result=0;while(mCursor.moveToNext()){
Log.i(TAG,"moveToNext");
name=mCursor.getString(mCursor.getColumnIndex(USER_NAME));
password=mCursor.getString(mCursor.getColumnIndex(USER_PWD));
phone=mCursor.getString(mCursor.getColumnIndex(USER_PHONE));
mail=mCursor.getString(mCursor.getColumnIndex(USER_MAIL));if((name.equals(userName) || name.equals(mail) || name.equals(phone)) &&password.equals(pwd)){
result= 1;
Log.i(TAG,"findUserByNameAndPwd , result="+result);break;
}
}returnresult;
}
}