簡體   English   中英

獲取SQLite android的特定行

[英]Get specific row of SQLite android

我是Android的新手,當用戶通過電子郵件和密碼登錄時需要使用它。 通過電子郵件將其余信息(如名字和出生日期)帶給用戶。 有什么辦法嗎?

“有沒有我可以添加的功能,通過電子郵件登錄后無法帶走所有用戶信息”

這是我的數據庫代碼:

public class DatabaseHelper extends SQLiteOpenHelper {


private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "UserManager.db";

private static final String TABLE_USER = "user";

private static final String COLUMN_USER_ID = "user_id";
private static final String COLUMN_USER_FIRST_NAME = "user_first_name";
private static final String COLUMN_USER_LAST_NAME = "user_last_name";
private static final String COLUMN_USER_EMAIL = "user_email";
private static final String COLUMN_USER_PHONE_NUMBER = "user_phone_number";
private static final String COLUMN_USER_BARTH_DAY = "user_barth_day";
private static final String COLUMN_USER_PASSWORD = "user_password";
private static final String COLUMN_USER_GENDER = "user_gender";

private String CREATE_USER_TABLE = "CREATE TABLE "+TABLE_USER + "("+
        COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"+
        COLUMN_USER_FIRST_NAME + " TEXT,"+ COLUMN_USER_LAST_NAME + " TEXT,"+
        COLUMN_USER_EMAIL + " TEXT PRIMARY KEY,"+COLUMN_USER_PHONE_NUMBER + " TEXT,"+
        COLUMN_USER_BARTH_DAY+" TEXT,"+ COLUMN_USER_PASSWORD+" TEXT," +
        COLUMN_USER_GENDER+" TEXT"+ ")";

private String DROP_USER_TABLE = "DROP TABLE IF EXISTS "+ TABLE_USER ;

public DatabaseHelper(Context context) {
    super(context , DATABASE_NAME, null , DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_USER_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(DROP_USER_TABLE);
    onCreate(db);
}

public void addUser(User user){
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(COLUMN_USER_FIRST_NAME , user.getFirstName());
    values.put(COLUMN_USER_LAST_NAME , user.getLastName());
    values.put(COLUMN_USER_EMAIL , user.getEmail());
    values.put(COLUMN_USER_PHONE_NUMBER , user.getPhoneNumber());
    values.put(COLUMN_USER_BARTH_DAY , user.getBarthDay());
    values.put(COLUMN_USER_PASSWORD , user.getPassword());
    values.put(COLUMN_USER_GENDER , user.getGender());

    database.insert(TABLE_USER , null, values);
    database.close();
}
public boolean checkUser (String email){
    String [] columns = {
            COLUMN_USER_ID
    };
    SQLiteDatabase database = this.getWritableDatabase();
    String selection = COLUMN_USER_EMAIL + " = ?";
    String[] selectionArgs = {email};

    Cursor cursor = database.query(TABLE_USER,
            columns,selection , selectionArgs,null,null,null);

    int cursorCount = cursor.getCount();
    cursor.close();
    database.close();

    if (cursorCount > 0){
        return true;
    }else {
        return false;
    }

}

public boolean checkUser (String email , String password){
    String [] columns = {
            COLUMN_USER_ID
    };
    SQLiteDatabase database = this.getWritableDatabase();
    String selection = COLUMN_USER_EMAIL + " = ?" + " AND " + COLUMN_USER_PASSWORD + " = ?";
    String[] selectionArgs = {email , password};

    Cursor cursor = database.query(TABLE_USER,
            columns,selection , selectionArgs,null,null,null);

    int cursorCount = cursor.getCount();
    cursor.close();
    database.close();

    if (cursorCount > 0){
        return true;
    }else {
        return false;
    }

}

}

對於第一個問題,您可以添加以下功能並使用它。

public User getSingleUserInfo(String email){

    SQLiteDatabase database = this.getWritableDatabase();
    Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_USER + " WHERE " + COLUMN_USER_EMAIL + "=" + email);
    cursor.moveToFirst();

    //setting related user info in User Object
    User user = new User();
    user.setUserId(cursor.getInt(cursor.getColumnIndexCOLUMN_USER_ID ));
    user.setFirstName(cursor.getString(cursor.getColumnIndex(COLUMN_USER_FIRST_NAME));
    user.setLastName(cursor.getString(cursor.getColumnIndex(COLUMN_USER_LAST_NAME ));
    user.setEmail(cursor.getString(cursor.getColumnIndex(COLUMN_USER_EMAIL ));
    user.setPhoneNumber(cursor.getString(cursor.getColumnIndex(COLUMN_USER_PHONE_NUMBER ));
    user.setBirthday(cursor.getString(cursor.getColumnIndex(COLUMN_USER_BARTH_DAY ));
    user.setPassword(cursor.getString(cursor.getColumnIndex(COLUMN_USER_PASSWORD));
    user.setGender(cursor.getString(cursor.getColumnIndex(COLUMN_USER_GENDER ));

    //close cursor & database
    cursor.close();
    database.close();

    return user;

}

注意:請注意User對象的setter函數,這些函數可能與我的示例和數據類型不同。 如果c.getInt()int ,則使用c.getString()如果String

您可以使用帶有密碼的特定電子郵件地址在數據庫中查詢以獲取所有詳細信息。

public String getUserName(String email, String password) {
    Cursor cursor = null;
    String firstName = "";
    try {
        cursor = SQLiteDatabaseInstance_.rawQuery("SELECT * FROM " + TABLE_USER + " WHERE "+ COLUMN_USER_EMAIL +"?", new String[] {email+ ""}+ " AND "+COLUMN_USER_PASSWORD+"?", new String[] {password+ ""});
        if(cursor.getCount() > 0) {
            cursor.moveToFirst();
            firstName= cursor.getString(cursor.getColumnIndex(COLUMN_USER_FIRST_NAME));
        }
        return firstName;
    }finally {
        cursor.close();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM