Ошибка в Android Studio при компиляции: INSERT INTO Таблица не существует? - PullRequest
0 голосов
/ 28 октября 2019

Пока я делаю проект, мне нужна помощь для помощника браузера БД, где я делаю это

 CREATE TABLE `OrderDetailID` (
    `ID`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    `ProductId` TEXT,
    `ProductName`   TEXT,
    `Quantity`  TEXT,
    `Price` TEXT,
    `Discount`  TEXT
);

Но когда я хочу добавить корзину в мое приложение, оно вылетает, и мой logcat показывает это:

android.database.sqlite.SQLiteException: no such table: OrderDetail (code 1 SQLITE_ERROR): , while compiling: INSERT INTO OrderDetail(ProductId,ProductName,Quantity,Price,Discount) VALUES('02','COCONUT PAO','1','1000','null');

И ошибка отображается в моем классе Database.java на

public void addToCart(Order order) {
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("INSERT INTO OrderDetail(ProductId,ProductName,Quantity,Price,Discount) VALUES('%s','%s','%s','%s','%s');",
            order.getProductId(),
            order.getProductName(),
            order.getQuantity(),
            order.getPrice(),
            order.getDiscount());

    db.execSQL(query);
}

И FoodDetail.java

btnCart.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new Database(getBaseContext()).addToCart(new Order(
                foodId,
                currentfood.getName(),
                numberButton.getNumber(),
                currentfood.getPrice(),
                currentfood.getDiscountmenuId()
        ));

        Toast.makeText(FoodDetail.this, "Added to cart", Toast.LENGTH_SHORT).show();
    }
});

После выполнения большого поиска я не сделалне могу найти никакого ответа на этот вопрос.

Для вашей информации, вот мой метод getCarts () в классе Database.java

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

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

    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;
}

1 Ответ

1 голос
/ 28 октября 2019

Вы создаете OrderDetailID, но пытаетесь вставить таблицу OrderDetail.

...