проблема в том, что всякий раз, когда я открываю кнопку корзины, отображается эта ошибка, а также еще одна проблема заключается в том, как изменить тип файла в 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)
Можете ли вы опубликовать свой build.gradle на уровне приложения? Это похоже на проблему зависимости Firebase, а не SQLite.
реализация '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 '
реализация 'com.google.firebase: firebase-database: 16.0.1' реализация 'com.firebaseui: firebase-ui-database: 1.2.0'
реализация 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 '
вместо того, чтобы публиковать это в комментариях, пожалуйста, редактировать эту информацию в свой вопрос
Пожалуйста, не меняйте вопрос полностью, чтобы задать новую проблему. Вы по-прежнему получаете ту же ошибку при полном удалении и повторной установке приложения? Он ищет таблицу с именем OrderDetail (без s в конце), но все экземпляры вашего имени таблицы верны в Database.java




РЕДАКТИРОВАТЬ Этот ответ охватывает редакция 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'
Вероятно, вам не следует использовать классы из пакета под названием
internal...