Вставка данных в базы данных SQlite в Android Studio - PullRequest
0 голосов
/ 23 марта 2020

В настоящее время я создаю приложение для входа в систему, используя SQlite в качестве базы данных. Я создал базу данных, но не могу вставить данные. Я пытался использовать несколько онлайн-уроков и предложений и не могу его взломать. Я всегда получаю не успешно созданное тост-сообщение, а не правильно установленное тост-сообщение. Любая помощь будет принята с благодарностью.

Код создания базы данных:

   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 contentValues = new ContentValues();
    contentValues.put("inputUsername", inputUsername);
    contentValues.put("inputPassword", inputPassword);
    contentValues.put("inputFirstName", inputFirstName);
    contentValues.put("inputSecondName", inputSecondName);
    long result = db.insert("User",null, contentValues);
    if (result ==-1)
    {
      return false;
    }
    else
    {
        return true;
    }
}

}

вставить код:

boolean insertData = db.insertUserData(UsernameInput, PasswordInput, Firstname, Secondname);

            if (insertData)
            {
                Toast.makeText(getApplicationContext(), "Account successfully made", Toast.LENGTH_LONG).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Account not successfully made", Toast.LENGTH_SHORT).show();
            }

            startActivity(new Intent(Biometric_create_user.this,MainActivity.class));

            Toast.makeText(getApplicationContext(), "Username : " + UsernameInput + "\nPassword:  " + PasswordInput + "\nFirst Name : " + Firstname + "\nSecond Name : " + Secondname, Toast.LENGTH_LONG).show();

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Имена столбцов в вашей таблице похожи на USERNAME, но имена, которые вы используете в ContentValues, похожи на inputUsername. Ключи значений содержимого должны совпадать с именами столбцов таблицы.

Вы также можете использовать insertOrThrow() вместо insert() для получения полезных сообщений об исключениях, таких как «no such column: inputUsername».

0 голосов
/ 23 марта 2020

Ваша строка написана с ошибкой:

db = new DatabseHelper(this);

Проверьте и подтвердите это. Эта проблема может быть связана с этой ошибкой.

Кроме того, вы пишете

SQLiteDatabase db = this.getWritableDatabase();

Вы уверены, что метод реализует SQLiteOpenHelper?

Попробуйте изменить эту строку: -

ContentValues ContentValues = new ContentValues();

Кому: -

ContentValues contentValues = new ContentValues ();

Также внесите соответствующие изменения имени в следующие три строки.

Редактировать: - Объявить вашу базу данных вне метода insertUserData , Итак, в основном вы пишете: -

db.insertUserData .......

Вы объявили DBH DatabaseHelper? Пожалуйста, поделитесь полным кодом файла.

Также у вас есть эта строка: -

long result = db.insert("User",null, contentValues)

Вы написали имя таблицы как Пользователь, тогда как фактическое имя таблицы - USER.

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