-1

当我在做一个项目时,我需要数据库浏览器助手的帮助,我在哪里做这个

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

经过大量搜索后,我没有找到任何答案。

供您参考,这是我在 Database.java 类上的 getCarts() 方法

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

1 回答 1

1

您创建OrderDetailID,但您试图插入表OrderDetail

于 2019-10-28T08:23:57.510 回答