我做了一個SQLite登錄和註冊應用程序。成功登錄後,我希望用戶看到一個TextView他/她看到「歡迎USER_NAME」和「您的ID號:USER_ID並通過USER_ID我想看到rowid的如何從SQLite數據庫獲取用戶ID(Rowid)並在TextView中顯示它(Android)
。這裏是DatabaseHelper的一些代碼:
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_NAME = "user_name";
private static final String COLUMN_USER_EMAIL = "user_email";
private static final String COLUMN_USER_PASSWORD = "user_password";
private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USER + "("
+ COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_USER_NAME + " TEXT,"
+ COLUMN_USER_EMAIL + " TEXT," + COLUMN_USER_PASSWORD + " TEXT" + ")";
public long getUserId (String email){
long userId = 0;
SQLiteDatabase db = this.getWritableDatabase();
String[] columns = {
COLUMN_USER_ID
};
String selection = COLUMN_USER_EMAIL + " = ?";
String[] selectionArgs = { email };
Cursor cursor = db.query(TABLE_USER,
columns,
selection,
selectionArgs,
null,
null,
null);
int cursorCount = cursor.getCount();
cursor.moveToFirst();
userId = cursor.getLong(0);
cursor.close();
db.close();
if (cursorCount > 0){
return userId;
}
return userId;
}
在LoginActivity我希望得到的用戶名的值,並點擊登錄後,用戶ID下面是一些代碼:
if (databaseHelper.checkUser(textInputEditTextEmail.getText().toString().trim()
, textInputEditTextPassword.getText().toString().trim())){
Intent accountsIntent = new Intent(activity, UsersActivity.class);
accountsIntent.putExtra("NAME", databaseHelper.getUserName(textInputEditTextEmail.getText().toString().trim()));
Intent idIntent = new Intent(activity, UsersActivity.class);
String ID = String.valueOf(databaseHelper.getUserId(textInputEditTextEmail.getText().toString().trim()));
idIntent.putExtra("ID", ID);
emptyInputEditText();
startActivity(accountsIntent);
} else {
Snackbar.make(nestedScrollView, getString(R.string.error_valid_email_password), Snackbar.LENGTH_LONG).show();
}
,並在結束時,我希望它顯示在UserActivity:
textViewName = (TextView) findViewById(R.id.text1);
String nameFromIntent = getIntent().getStringExtra("NAME");
textViewName.setText("Welcome " + nameFromIntent);
textViewId = (TextView) findViewById(R.id.text2);
String idFromIntent = getIntent().getStringExtra("ID");
textViewId.setText("Your Id-Number: " + idFromIntent);
然而,隨着用戶名一切工作得很好,但用戶id搞砸。它顯示我「您的ID號:空」
我找不到任何解決方案,所以我在這裏發佈。 如何獲取用戶標識,必須是INTEGER PRIMARY KEY AUTOINCREMENT並將其顯示爲字符串。但是爲了使它更加複雜,我還需要將用戶標識作爲int/long用於其他功能(轉換爲二進制代碼,...)。
爲什麼你寫的數據庫,而不是可讀的數據庫,在getUserId( ) 方法? – Hetfieldan24
@ Hetfieldan24我嘗試過兩種都不行。 – flash17
當你使用'DatabaseUtils#dumpCursor()'方法時,你會看到什麼? – pskink