Я работаю над приложением для покупок и пытаюсь настроить функцию профиля пользователя. Пользователи могут зарегистрировать учетную запись с датой, сохраненной в учетной записи. Я использовал базу данных SQLite для хранения, и она успешно сохранила правильную дату, но когда я получаю, она всегда возвращает меня 1970-01-01 независимо от того, что я сохранил.
Я использую java.utils.Date
Это база данных:
private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USER + "("
+ COLUMN_USER_NO + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_USERNAME + " TEXT," + COLUMN_PASSWORD + " TEXT,"
+ COLUMN_TELEPHONE + " TEXT," + COLUMN_ADDRESS + " TEXT,"
+ COLUMN_CREDITCARD_NO + " INTEGER," + COLUMN_SECURITY_NO + " INTEGER,"
+ COLUMN_EXPIRY_DATE + " LONG," + COLUMN_RATING + " INTEGER, "
+ COLUMN_TOTAL_RATED_BY + " INTEGER" + ")";
Вот как я получаю данные пользователя:
public User getUser(String username) {
// array of columns to fetch
String[] columns = {
COLUMN_USER_NO,
COLUMN_USERNAME,
COLUMN_PASSWORD,
COLUMN_TELEPHONE,
COLUMN_ADDRESS,
COLUMN_CREDITCARD_NO,
COLUMN_SECURITY_NO,
COLUMN_EXPIRY_DATE,
COLUMN_RATING,
COLUMN_TOTAL_RATED_BY
};
String sortOrder = COLUMN_USER_NO + " ASC";
String selection = COLUMN_USERNAME + " =?";
String[] selectionArgs = {username};
SQLiteDatabase db = this.getReadableDatabase();
// query the user table
/**
* Here query function is used to fetch records from user table this function works like we use sql query.
* SQL query equivalent to this query function is
* SELECT user_no,user_name,user_email,password FROM user ORDER BY user_name;
*/
Cursor cursor = db.query(TABLE_USER,
columns, //columns to return
selection, //columns for the WHERE clause
selectionArgs, //The values for the WHERE clause
null, //group the rows
null,
sortOrder); //filter by row groups
if (cursor != null) {
cursor.moveToFirst();
}
User u1 = new User();
u1.setUserNo(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_USER_NO))));
u1.setUsername(cursor.getString(cursor.getColumnIndex(COLUMN_USERNAME)));
u1.setPassword(cursor.getString(cursor.getColumnIndex(COLUMN_PASSWORD)));
u1.setTelephone(cursor.getString(cursor.getColumnIndex(COLUMN_TELEPHONE)));
u1.setAddress(cursor.getString(cursor.getColumnIndex(COLUMN_ADDRESS)));
u1.setCreditCardNo(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_CREDITCARD_NO))));
u1.setSecurityNo(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_SECURITY_NO))));
u1.setExpiryDate(new Date(cursor.getLong(cursor.getColumnIndex(COLUMN_EXPIRY_DATE))));
u1.setRating(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_RATING))));
u1.setTotalRatedBy(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_TOTAL_RATED_BY))));
return u1;
}
И это строка, которую я использовал для получения даты от определенного пользователя:
mTextViewProfileCreditCardExpiryDate.setText(user.getExpiryDate());
Как я могу получить правильную сохраненную дату?