Не удается создать базу данных

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

DatabaseHelper.java

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {
        public static final String DATABASE_NAME = "Student.db";
        public static final String TABLE_NAME = "student_table";
        public static final String COL_1 = "ID";
        public static final String COL_2 = "NAME";
        public static final String COL_3 = "I1Q1";
        public static final String COL_4 = "I1Q2";
        public static final String COL_5 = "I2Q1";
        public static final String COL_6 = "I2Q2";
        public static final String COL_7 = "I3Q1";
        public static final String COL_8 = "I3Q2";
        public static final String COL_9 = "I4Q1";
        public static final String COL_10 = "I4Q2";
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,I1Q1 TEXT,I1Q2 TEXT,I2Q1 TEXT,I2Q2 TEXT,I3Q1 TEXT,I3Q2 TEXT,I4Q1 TEXT,I4Q2 TEXT)");
        }

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

Основной Activity.java

public class MainActivity extends AppCompatActivity {
    DatabaseHelper myDb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDb = new DatabaseHelper(this);
    }
}

Документация для SQLiteOpenHelper может быть актуальной: developer.android.com/reference/android/database/sqlite/…

Shawn 11.11.2018 23:49

Возможный дубликат база данных sqlite не создана

Matt Ke 12.11.2018 00:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
39
2

Ответы 2

Вы создали объект DatabaseHelper в onCreate(), но еще не использовали свой SQLiteDatabase. Поэтому база данных так и не была создана.

Позвоните в myDb.getWrittableDatabase() в onCreate(), и ваша база данных будет создана после.

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

Хороший совет - использовать ORM вместо того, чтобы писать весь код для базы данных самостоятельно. Рекомендую использовать Комната

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