Подключение моего приложения к базе данных SQLite - как? - PullRequest
0 голосов
/ 25 ноября 2018

Я создаю приложение для входа, в котором у пользователя есть имя пользователя и пароль.Я хочу сохранить данные регистрации в моей базе данных, но когда я хочу получить доступ к элементам из базы данных, кажется, что никто не сохраняется (у него нет пользователя, сохраненного в БД).Я полагаю, ошибка происходит от реализации БД.Любая идея?

public class DataBaseHelper extends SQLiteOpenHelper {

public static final String TABLE_NAME = "user_table";
public static final String COL1 = "ID";
public static final String COL2 = "user_username";
public static final String COL3 = "user_password";

public DataBaseHelper(Context context) {
    super(context, TABLE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME + "( " + COL2 + " TEXT," +
            COL3 + "TEXT)";
    db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

public void add(String name, String password) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL2, name);
    contentValues.put(COL3, password);
    db.insert(TABLE_NAME, null, contentValues);
}

public Cursor getData() {
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT *FROM " + TABLE_NAME;
    Cursor data = db.rawQuery(query, null);
    return data;
}

ВХОД Активность:

public void loginSeach(View view) {
    EditText password_editText = (EditText) findViewById(R.id.editText_password);
    EditText username_editText = (EditText) findViewById(R.id.editText_username);
    String currUserName = username_editText.getText().toString();
    String currPassWord = password_editText.getText().toString();
    DataBaseHelper db = new DataBaseHelper(this);
    Cursor data = db.getData();
    int Number = 0;
    while (data.moveToNext()) {
        Number ++;
        String userName = data.getString(1);
        String passWord = data.getString(2);
    }

    Toast.makeText(this, Integer.toString(Number), Toast.LENGTH_SHORT).show();

}

Регистрация активности:

public void createAccount(View view) {
    EditText usernameEditText = (EditText) findViewById(R.id.editText_createUsername);
    EditText passwordEditText = (EditText) findViewById(R.id.editText_createPassword);
    String userName = usernameEditText.getText().toString();
    String passWord = passwordEditText.getText().toString();

    dataBaseHelper.add(userName, passWord);

    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);

}

1 Ответ

0 голосов
/ 25 ноября 2018

Этот оператор в onCreate():

String createTable = "CREATE TABLE " + TABLE_NAME + "(" + COL2 + " TEXT," + COL3 + "TEXT)";

создал таблицу без столбца ID.Удалите приложение с эмулятора / устройства, измените код на:

String createTable = "CREATE TABLE " + TABLE_NAME + "(" + COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL2 + " TEXT," + COL3 + " TEXT)";

и перезапустите приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...