Не можете найти базу данных в браузере БД SQLite? - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок и создаю регистрационную базу данных для школьного проекта, когда я захожу в DB Browser для SQLite и открываю свой файл, там нет таблиц или содержимого? Будет ли это как-то связано с моим использованием onCreate или onUpgrade? Я провел много исследований, но результаты, которые я получаю, всегда были получены очень давно, и я действительно не понимаю их. Когда я ввожу информацию в свой эмулятор, я также получаю код ошибки «SQLiteException: нет такой таблицы». Я действительно не уверен, что делать с моим кодом.

package android.example.rise;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.nfc.Tag;
import android.text.Html;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME="register.db";
    public static final String TABLE_NAME="register.db";
    public static final String COL_1="ID";
    public static final String COL_2="first";
    public static final String COL_3="second";
    public static final String COL_4="last";
    public static final String COL_5="email";
    public static final String COL_6="password";

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

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("CREATE TABLE registeruser (ID INTEGER PRIMARY KEY AUTOINCREMENT, first TEXT, second TEXT, last TEXT, email TEXT, password TEXT)");
    }

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

    }

    public long addUser(String first, String middle, String last, String user, String password) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("first", first);
        contentValues.put("second", middle);
        contentValues.put("last", last);
        contentValues.put("email", user);
        contentValues.put("password", password);
        long res = db.insert("registeruser", null, contentValues);
        return res;

    }

    public boolean checkUser(String email, String password){
        String[] column = {COL_1};
        SQLiteDatabase db = getReadableDatabase();
        String selection = COL_5 + "=?" + " and " + COL_6 + "=?";
        String[] selectionArgs = { email, password } ;
        Cursor cursor = db.query(TABLE_NAME,column,selection,selectionArgs,null,null,null);
        int count = cursor.getCount();
        cursor.close();
        db.close();

        if(count>0)
            return true;
        else
            return false;
    }

}

1 Ответ

0 голосов
/ 17 апреля 2019

В этой строке:

public static final String TABLE_NAME="register.db";

Я думаю, по ошибке вы определяете имя таблицы так же, как имя базы данных,хотя в операторе CREATE:

sqLiteDatabase.execSQL("CREATE TABLE registeruser (.....)");

вы создаете таблицу с именем registeruser.Позже в вашем коде вы всегда используете переменную TABLE_NAME, которая отличается от созданной таблицы.Кроме того, поскольку вы определили переменные для имен таблицы и столбцов, не задавайте их снова жестко.Измените объявление на:

public static final String TABLE_NAME="registeruser";

и оператор CREATE на:

sqLiteDatabase.execSQL(
    "CREATE TABLE " + TABLE_NAME + " (" + 
        COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        COL_2 + " TEXT, " + 
        COL_3 + " TEXT, " +
        COL_4 + " TEXT, " +
        COL_5 + " TEXT, " +
        COL_6 + " TEXT)"
);

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

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