В настоящее время для создания приложения для входа в систему используется база данных SQlite с Android studio. В настоящее время я пытаюсь извлечь данные из базы данных построчно и сравниваю имя пользователя и пароль с введенными именем пользователя и паролем пользователя. Делая это, я хочу найти подходящее имя пользователя и пароль, а затем вывести соответствующую информацию о пользователе.
Я не уверен, что лучший способ для этого. Я использовал курсор, но, похоже, смог вернуть только первые значения в базе данных. Было бы лучше использовать столбец идентификатора, который автоинкрементно, и сравнить значение счетчика с идентификатором в для l oop? Или было бы лучше вывести всю базу данных в массив, а затем использовать значение счетчика для основного действия, чтобы пролистать массив для получения необходимой информации.
Код базы данных:
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "BIOSECURE";
public static final String TABLE_NAME = "USER";
public static final String COL_1 = "USERNAME";
public static final String COL_2 = "PASSWORD";
public static final String COL_3 = "FIRSTNAME";
public static final String COL_4 = "SECONDNAME";
public static final String COL_5 = "FINGERPRINT";
public static final String COL_6 = "FACE";
// Basi c база данных
public DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE USER ( USERNAME TEXT PRIMARY KEY, PASSWORD TEXT, FIRSTNAME TEXT, SECONDNAME TEXT, FINGERPRINT BLOB, FACE BLOB)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS USER");
}
// Inserting into database
public boolean insertUserData (String inputUsername, String inputPassword, String inputFirstName, String inputSecondName)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COL_1, inputUsername);
cv.put(COL_2, inputPassword);
cv.put(COL_3, inputFirstName);
cv.put(COL_4, inputSecondName);
// contentValues.put(COL_5, inputFingerprint);
// contentValues.put(COL_6, inputFace);
long result = db.insert(TABLE_NAME,null, cv);
db.close();
return result!= -1;
}
// Not working yet
public Cursor CompareUserData () {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return cursor;
Основной код активности:
// CHECKING USER LOGIN DETAILS
Cursor cursor = db.CompareUserData();
for (count = 0; count<=cursor.getCount();count++)
{
if (cursor.moveToPosition(count))
{
if (UsernameInput.getText().toString().equals(cursor.getString(0))&&PasswordInput.getText().toString().equals(cursor.getString(1)))
{
passUser = cursor.getString(0);
passPass = cursor.getString(1);
passFirst = cursor.getString(2);
passSecond = cursor.getString(3);
getUser();
getPass();
getFirst();
getSecond();
Toast.makeText(getApplicationContext(), "Successfully logged in", Toast.LENGTH_SHORT).show();
LoginValidation();
}
}
}
if (count > cursor.getCount())
{
Toast.makeText(getApplicationContext(),"Incorrect Username or password",Toast.LENGTH_SHORT).show();
}