Почему это генерирует 1 таблицу, когда очевидно, что она должна генерировать 2?

#sql #database #sqlite #android-studio

Вопрос:

Итак, я работаю над проектом в Android Studio и столкнулся с неожиданным поведением встроенной библиотеки SQLite. Я пишу код, который, по крайней мере, должен генерировать 2 таблицы, одна из которых-пользователи, а другая-весовая таблица, и она генерирует только пользователей.

Я наткнулся на другой вопрос, в котором говорилось, что ExecSQL принимает только одно утверждение, но объединение 2 таблиц в один ExecSQL, похоже, тоже не сработало

Код:

 


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.EditText;
import android.widget.Toast;

public class DBHelper extends SQLiteOpenHelper {

    public static final String DB_NAME = "Login.db";

    public DBHelper(Context context)
    {
        super(context,DB_NAME,null,1);
    }

    @Override
    public void onCreate(SQLiteDatabase myDB) {

        myDB.execSQL("create Table users(username TEXT primary key, password TEXT)"); 
        myDB.execSQL("create Table weightTable(username TEXT,date TEXT, weight INT)");


    }

    @Override
    public void onUpgrade(SQLiteDatabase myDB, int i, int i1) {
       myDB.execSQL("drop Table if exists users");
       myDB.execSQL("drop Table if exists weightTable");

    }
}
 

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

Комментарии:

1. У вас есть синтаксическая ошибка в onUpgrade методе. Тем не менее, пожалуйста, укажите конкретную деталь, точную ошибку. Обратите внимание, что в синтаксисе нет ничего плохого create table . Так что ошибка, скорее всего, в другом месте. dbfiddle.uk/…

2. У меня есть проверка ошибок в самой Android Studio, и, кроме того, я считаю, что приложение просто не запустится, если у вас есть синтаксическая ошибка. Причина, по которой он существует, заключается в том, что исходный код уже слишком запутан, поэтому я ввел его в переполнение стека и, по-видимому, допустил опечатку. Есть ли какая-либо другая причина, по которой вы можете подумать, что это работает неправильно?

3. Это выглядит разумно. Если вы не видите ошибок, возможно, таблица создана, а затем удалена. Как вы решили, что таблица не создана?

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

5. Кроме того, я пришел только для того, чтобы проверить это, потому что при попытке вставить в таблицу весов она выдает исключение «такой таблицы нет»…