#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. Кроме того, я пришел только для того, чтобы проверить это, потому что при попытке вставить в таблицу весов она выдает исключение «такой таблицы нет»…