android - Android.database.sqlite.SQLiteException:没有这样的列:500.0(代码1)
问题描述
由于 2 天,我无法找到错误。如果单击 FloatingActionButton,我会收到此错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.pizza, PID: 32058
android.database.sqlite.SQLiteException: no such column: 500.0 (code 1): , while compiling: INSERT INTO OrderDetail(ProductId,ProductName,Quantity,Price,Discount) VALUES('26','Margarita','1','500'.'0');
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such column: 500.0 (code 1): , while compiling: INSERT INTO OrderDetail(ProductId,ProductName,Quantity,Price,Discount) VALUES('26','Margarita','1','500'.'0');)
#################################################################
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1096)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:661)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:2109)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:2039)
at de.pizza.Database.Database.addToCart(Database.java:60)
at de.pizza.FoodDetail$1.onClick(FoodDetail.java:57)
at android.view.View.performClick(View.java:6897)
at android.view.View$PerformClick.run(View.java:26101)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Application terminated.
我检查了我的查询超过 10 次,但找不到任何东西:(
FoodDetail.java
public List<Order> getCarts() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"ProductName", "ProductId", "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;
}
数据库.java
public class Database extends SQLiteAssetHelper {
private static final String DB_NAME = "PBBANK.db";
private static 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 = {"ProductName", "ProductId", "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;
}
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);
}
public void cleanCart()
{
SQLiteDatabase db = getReadableDatabase();
String query = String.format("DELETE FROM ORDER OrderDetail");
db.execSQL(query);
}
}
我希望我的信息足够,有人可以帮助我。
谢谢!
解决方案
您的 SQL 查询中有问题。你的最后一个参数没有逗号。将您的行更改为:
从
'%s','%s','%s','%s'.'%s'
到
'%s','%s','%s','%s','%s'
希望它会帮助你。让我知道。
推荐阅读
- android - android 7“网络安全配置”什么连接拦截?
- javascript - 仅加载一次 WebAssembly 模块/单例
- java - 对嵌套元素运行 hql 查询返回“意外的 AST 节点”
- c# - 有没有办法使用 selenium C# 在 Chrome 中以另一个用户身份登录?
- data-structures - Avl 树 - 在 i 之后找到树中丢失的第一个键
- c++ - 为什么私有方法覆盖基类公共虚拟方法(具有公共继承)?
- angular - 角 HttpClient | 相当于 curl --user (基本认证)
- regex - 如何在 Google Data Studio 中使用 REGEXP_EXTRACT 从 URL 路径中提取年份?
- postgresql - 可以用 plpgsql 读/写/删除操作系统文件吗?
- r - 使用 R ggplot2 grobs 来显示绘图。这会导致内存泄漏吗?