База данных SQLite не создается - PullRequest
0 голосов
/ 06 октября 2019
public class SampleDB extends SQLiteOpenHelper
{

    public static final String DATABASE_NAME = "sample.db";
    public static final String TABLE_NAME = "student_table";
    public static final String COL_1 = "id";
    public static final String COL_2 = "name";


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

    @Override
    public void onCreate(SQLiteDatabase db)
    {
         db.execSQL("CREATE TABLE "+ TABLE_NAME + " ( " +
            COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COL_2 + " TEXT)"
         );

    insertData(1,"abc");
    insertData(2,"def");
    }

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

    public void insertData(int id, String name)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COL_1,id);
        cv.put(COL_2,name);
        db.insert(TABLE_NAME,null,cv);
    }
}

Я что-то упустил? Ниже я написал код в onCreate () MainActivity.

SampleDB mydb = new SampleDB(this);

PS: Пустая схема базы данных создается, когда я не вызываю insert и пишу getWritableDatabase () в конструкторе.

1 Ответ

0 голосов
/ 06 октября 2019

С https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper

База данных фактически не создается и не открывается до тех пор, пока не будет вызвана одна из функций getWritableDatabase () или getReadableDatabase ().

Обновлено:

Некоторые общие рекомендации по решению проблем, подобных этой: -

При разработке и изменении кода базы данных стоит убедиться, что вы всегда начинаете с известного момента при тестировании, сбрасывая базу данных. Это можно сделать следующим образом: -

  • Используйте «Обозреватель файлов устройств» в Android Studio, чтобы найти / data / data / {имя вашего пакета} / database и удалить файлы

Или

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