错误代码:1(SQLITE_ERROR) 引起:SQL(查询)错误或缺少数据库。
这是我在android studio中的sqlite代码
public class Database extends SQLiteAssetHelper{
private static final String DB_NAME="Jerson.db";
private static final int DB_VER=1;
public Database(Context context)
{
super(context, DB_NAME,null,DB_VER);
}
public List<Orders> getCarts()
{
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect={"MenuId","Name","Quantity","Price"};
String sqlTable="OrderDetails";
qb.setTables(sqlTable);
Cursor c = qb.query(db,sqlSelect,null,null,null,null,null);
final List<Orders> result = new ArrayList<>();
if (c.moveToFirst())
{
do {
result.add(new Orders(c.getString(c.getColumnIndex("MenuId")),
c.getString(c.getColumnIndex("Name")),
c.getString(c.getColumnIndex("Quantity")),
c.getInt(c.getColumnIndex("Price"))
));
}while (c.moveToNext());
}
return result;
}
public void addToCart(Order order)
{
SQLiteDatabase db = getReadableDatabase();
String query = String.format("INSERT INTO OrderDetails(MenuId,Name,Quantity,Price)VALUES('%s','%s','%s','%s');",
order.getMenuId(),
order.getName(),
order.getQuantity(),
order.getPrice());
db.execSQL(query);
}
public void cleanCart()
{
SQLiteDatabase db = getReadableDatabase();
String query = String.format("DELETE FROM OrderDetails");
db.execSQL(query);
}
}
我确信我在sqlite中有一个表我不知道为什么它没有给我这样的表
这里是我使用数据库的代码片段
btnCart.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
new Database(getBaseContext()).addToCart(new Order(
foodId,
currentFood.getName(),
numberButton.getNumber(),
currentFood.getPrice()
));
Toast.makeText(FoodDetail.this, "Added To Cart", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:0)
找不到表的最常见原因是在创建数据库时尚未创建。这可能是由于故事创建语句中的SQL错误或从资产文件夹复制打包数据库时遇到的问题。
后者可能是一个写得很糟糕的复制过程,因此经常推荐使用 SQLiteAssetHelper ,因为它经过了尝试和测试。但是,即使使用 SQliteAssetHelper ,错误的文件也可能导致此类错误,因此在创建表之前会保存此类数据库,因为某些SQLite工具可以允许。
使用SQLiteAssethelper时,按照这个问题。修复应该是: -
删除应用程序的数据或卸载应用程序(两者都将删除现有的数据库,允许它被复制(SQLiteAssethelper检查数据库是否存在,如果是,那么它不会尝试复制资产))。
使用SQlite工具检查数据库是否正常并保存。
将保存的文件(最好在Android Studio外部完成)复制到App的资产/数据库文件夹(如果需要,可以创建资产文件夹和数据库文件夹)。
重新运行应用程序。