Как решить сбой инициализации API Firebase в Android?

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

Зависимости:

dependencies {

    //implementation fileTree(dir: 'libs', include: ['*.jar']

    implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.cepheuen.elegant-number-button:lib:1.0.2'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.google.firebase:firebase-core:10.2.0'
    implementation 'info.hoang8f:fbutton:1.0.5'
    implementation 'com.rengwuxian.materialedittext:library:2.1.4'
    implementation 'com.google.firebase:firebase-database:10.2.0'
    implementation 'com.firebaseui:firebase-ui-database:1.2.0'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.android.support:design:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Это код файла database.java:

package com.example.saikrishna.gaadimela.Database;    
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;

import com.example.saikrishna.gaadimela.Model.Order;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

import java.util.ArrayList;
import java.util.List;

public class Database extends SQLiteAssetHelper {
    private static final String DB_NAME = "BuyItDB.sqlite";
    private static  final int DB_VER = 1;


     public Database(Context context) {
        super(context, DB_NAME,null, DB_VER);
    }


    public List<Order> getCarts(){
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        String[] sqlSelect = {"ProductId","ProductName","Quantity","Price","Discount"};
        String sqlTable = "OrderDetails";

        qb.setTables(sqlTable);
        Cursor c = qb.query(db,sqlSelect,null,null,null,null,null);

        final List<Order> result = new ArrayList<>();
        if (c.moveToFirst()){
            do {
                result.add(new Order(c.getString(c.getColumnIndex("ProductId")),
                c.getString(c.getColumnIndex("ProductName")),
                 c.getString(c.getColumnIndex("Quantity")),
                        c.getString(c.getColumnIndex("Price")),
                        c.getString(c.getColumnIndex("Discount"))
                        ));

            }while (c.moveToNext());
        }
        return result;
    }

    public void addToCart(Order order){

        SQLiteDatabase db =getReadableDatabase();
        String query = String.format("INSERT INTO OrderDetails(ProductId,ProductName,Quantity,Price,Discount) VALUES ('&ProductId','&ProductName','&Quantity','&Price','&Discount');",
                order.getProductId(),
                order.getProductName(),
                order.getQuantity(),
                order.getPrice(),
                order.getDiscount());
            db.execSQL(query);
    }

    public void cleanCart(){

        SQLiteDatabase db =getReadableDatabase();
        String query = String.format("DELETE FROM OrderDetails");
        db.execSQL(query);
    }
}

Это ошибка, отображаемая в logcat:

  06-15 08:30:27.476 5841-5841/com.example.saikrishna.gaadimela E/SQLiteLog: (1) no such table: OrderDetail
06-15 08:30:27.476 5841-5841/com.example.saikrishna.gaadimela D/AndroidRuntime: Shutting down VM
06-15 08:30:27.480 5841-5841/com.example.saikrishna.gaadimela E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.saikrishna.gaadimela, PID: 5841
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.saikrishna.gaadimela/com.example.saikrishna.gaadimela.Cart}: android.database.sqlite.SQLiteException: no such table: OrderDetail (code 1): , while compiling: SELECT ProductId, ProductName, Quantity, Price, Discount FROM OrderDetail
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.database.sqlite.SQLiteException: no such table: OrderDetail (code 1): , while compiling: SELECT ProductId, ProductName, Quantity, Price, Discount FROM OrderDetail
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
        at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
        at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
        at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:400)
        at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:294)
        at com.example.saikrishna.gaadimela.Database.Database.getCarts(Database.java:32)
        at com.example.saikrishna.gaadimela.Cart.loadListCar(Cart.java:115)
        at com.example.saikrishna.gaadimela.Cart.onCreate(Cart.java:66)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5254) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Вероятно, вам не следует использовать классы из пакета под названием internal ...

Lino 14.06.2018 13:32

Можете ли вы опубликовать свой build.gradle на уровне приложения? Это похоже на проблему зависимости Firebase, а не SQLite.

Michael Dodd 14.06.2018 13:34

реализация 'com.amulyakhare: com.amulyakhare.textdrawable: 1.0.1' реализация 'com.readystatesoftware.sqliteasset: sqliteassethelper: +' реализация 'com.android.support:design:27.1.1' реализация 'com.cepheuen.elegant- number-button: lib: 1.0.2 'реализация' com.android.support:appcompat-v7:27.1.1 'реализация' com.google.firebase: firebase-core: 10.2.0 'реализация' info.hoang8f: fbutton: 1.0.5 'реализация' com.rengwuxian.materialedittext: библиотека: 2.1.4 '

mohandattu 14.06.2018 13:41

реализация 'com.google.firebase: firebase-database: 16.0.1' реализация 'com.firebaseui: firebase-ui-database: 1.2.0'

mohandattu 14.06.2018 13:42

реализация com.android.support:cardview-v7:27.1.1 реализация com.android.support:recyclerview-v7:27.1.1 реализация com.squareup.picasso: picasso: 2.5.2 реализация com. android.support.constraint: constraint-layout: 1.1.0 'реализация' com.android.support:design:27.1.1 'testImplementation' junit: junit: 4.12 'androidTestImplementation' com.android.support.test: runner: 1.0. 2 'androidTestImplementation' com.android.support.test.espresso: espresso-core: 3.0.2 '

mohandattu 14.06.2018 13:42

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

Lino 14.06.2018 13:43

Пожалуйста, не меняйте вопрос полностью, чтобы задать новую проблему. Вы по-прежнему получаете ту же ошибку при полном удалении и повторной установке приложения? Он ищет таблицу с именем OrderDetail (без s в конце), но все экземпляры вашего имени таблицы верны в Database.java

Michael Dodd 15.06.2018 11:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
7
421
1

Ответы 1

РЕДАКТИРОВАТЬ Этот ответ охватывает редакция 4, поскольку OP полностью изменил вопрос с тех пор.

У вас есть несоответствие версии для ваших зависимостей firebase. Вот что у вас сейчас есть:

implementation 'com.google.firebase:firebase-core:10.2.0'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.firebaseui:firebase-ui-database:1.2.0'

firebase-core и firebase-ui-database - старые версии, а firebase-database - актуальная. В результате firebase-database ожидает от firebase-core методов, которых может не быть или которые могут работать не так, как задумано. Вы можете исправить это, обновившись до последние версии:

implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.firebaseui:firebase-ui-database:4.0.1'

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