E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.appmediocurso, PID: 2740 - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь вставить значения в базу данных на SQLite с помощью SQLiteOpenHelper, но приложение закрывается.

Я работаю с SQLiteOpenHelper на Android studio и использую операцию для вставки значений в базу данных, когдаСначала я вхожу в действие. Я могу вставить все значения, которые я хочу, но когда я выхожу, повторно введите действие и нажмите кнопку «Registar», которая вставляет значения в таблицу, приложение закрывается без отображения сообщения Toast.

public void Registrar (Просмотр представления) {

Toast.makeText (this, "Entro al registrar", Toast.LENGTH_SHORT) .show ();

    AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);

    SQLiteDatabase bd = admin.getWritableDatabase(); <- in this line close

'' '' '' '' ''}

МОДУЛЬ ЛОГА

E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.example.appmediocurso, PID: 2740

java.lang.IllegalStateException: Could not execute method for android:onClick
    at $DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
    at android.view.View.performClick(View.java:6205)
    at android.widget.TextView.performClick(TextView.java:11103)
    at android.view.View$PerformClick.run(View.java:23653)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
    at android.view.View.performClick(View.java:6205) 
    at android.widget.TextView.performClick(TextView.java:11103) 
    at android.view.View$PerformClick.run(View.java:23653) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6682) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

 Caused by: android.database.sqlite.SQLiteException: Can't downgrade database from version 5 to 1
    at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:360)
    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:254)
    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)

    at com.example.appmediocurso.NuevoDeudor.Registrar(NuevoDeudor.java:57)

    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
    at android.view.View.performClick(View.java:6205) 
    at android.widget.TextView.performClick(TextView.java:11103) 
    at android.view.View$PerformClick.run(View.java:23653) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6682) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 

E / Watchdog:! @Sync 4269 [26_abr_16_41_35.985] E / wifi: не удалось получить список каналов: -95

Я ожидаю вставить значения, даже если это второй или третий разЯ вхожу в акт.

1 Ответ

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

Причина в том, что перед неудачным запуском в базе данных был установлен номер версии 5 , но вы пытаетесь использовать версию 1 без переопределения onDowngrade SQliteOpenHelper. метод;который без переопределения приводит к обнаруженному исключению, как и предполагалось, поскольку сокращение номера версии обычно не выполняется.

То есть AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 5); использовалось, но теперь AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1); использовалось (4-й параметр был 5 , но теперь 1 ).

Вы можете исправить это, снова используя номер версии 5.

Другим исправлением может быть удалениеПриложите или удалите данные приложения, а затем повторно запустите приложение без изменения версии.Отмечая, что это приведет к потере всех данных.

Еще одним исправлением может быть переопределение метода onUpgrade (возможно, бездействия), тогда версия должна быть установлена ​​на 1, данныебудет сохранено.

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

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