Когда я пытаюсь создать CREATE_USER_TABLE, возникает ошибка

//это мой DatabaseHelper.java

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," + ")";

private String DROP_USER_TABLE = "DROP TABLE IF EXISTS" + TABLE_USER;

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_USER_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(DROP_USER_TABLE);
    onCreate(db);
}

public void addUser(User user) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_USER_NAME, user.getName());
    values.put(COLUMN_USER_EMAIL, user.getEmail());
    values.put(COLUMN_USER_PASSWORD, user.getPassword());

    db.insert(TABLE_USER, null, values);
    db.close();
}

public boolean checkUser(String email, String password) {
    String[] columns = {
            COLUMN_USER_ID
    };
    SQLiteDatabase db = this.getWritableDatabase();

    String selection = COLUMN_USER_EMAIL + " = ?" + " AND " + COLUMN_USER_PASSWORD + "=?";
    String[] selectionArgs = {email,password};

    Cursor cursor = db.query(TABLE_USER,
            columns,
            selection,
            selectionArgs,
            null,
            null,
            null);
    int cursorCount = cursor.getCount();
    cursor.close();
    db.close();
    if (cursorCount > 0){
        return  true;
    }
    return false;
}`

Вы изучали компонент архитектуры Android Room? Вот ссылка на Room: developer.android.com/topic/libraries/architecture/room Эта библиотека сохраняемости Room построена на SQLite и позволяет очень легко превращать ваши классы в таблицы для SQLite. Он также может генерировать множество необходимых инструкций SQL от вашего имени, что делает его простым и безошибочным. Попробуйте. Вот официальное видео об этом: youtube.com/watch?v=SKWh4ckvFPM

MD Naseem Ashraf 10.03.2019 05:05
0
1
125
1

Ответы 1

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

Что нужно иметь в виду, так это то, что SQLite полагается на соответствующие пробелы в своих операторах. Итак, ваше утверждение

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," + ")";

переведет на что-то вроде

CREATE user_table useridINTEGER PRIMARY KEY AUTOINCREMENT,user_nameTEXTuser_emailTEXT,user_passwordTEXT,)

Видите проблему? Пространства не там, где они должны быть. Вам нужно будет создать примерно такое заявление:

CREATE user_table, userid INTEGER PRIMARY KEY  AUTOINCREMENT,user_name TEXT, user_email TEXT, user_password TEXT

чтобы пробелы вставлялись правильно.

Сделайте логарифмическую печать, чтобы увидеть заявление, которое вы создаете, чтобы вы могли внести коррективы.

Другие вопросы по теме