【发布时间】:2020-12-19 13:56:03
【问题描述】:
我正在制作一个应用程序,其中 MainActivity 有一个包含用户列表的 RecyclerView,例如购物清单、每周清单等。
当用户点击一个项目时,它会导航到产品活动也有一个 RecyclerView。我有 2 个不同的 SQLite 数据库 1:lists 2:products。
我使用的逻辑是当用户添加列表时,列表数据库会记录列表名称和id,还会在产品数据库中添加列表名称,当用户添加产品时,我使用update()而不是insert() SQLite 因为该列已经存在,所以产品数据库中会更新产品名称和id。
这是列表和产品表的结构:
LISTS
ID LIST_NAME
1 1 list 1
2 2 list 2
PRODUCTS
ID LIST_NAME PRODUCT_NAME
1 1 list 1 product1 in list1
2 2 list 1 product2 in list1
问题是当我添加一个列表然后导航到产品时,我看到了这个错误:
android.database.sqlite.SQLiteException: no such column: list (Sqlite code 1 SQLITE_ERROR): , while compiling: SELECT * FROM prducts WHERE LIST_NAME = list, (OS error - 2:No such file or directory)
这是SQLiteOpenHelper中的方法,错误显示在这一行:cursor = db.rawQuery(productsQuery, null);
public Cursor getAllProducts(String list_name)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = null;
if (db != null)
{
String productsQuery = " SELECT * FROM " +DB_TABLE+ " WHERE "+LIST_NAME_COLUMN+ " = "+list_name;
cursor = db.rawQuery(productsQuery, null);
}
return cursor;
}
在产品活动中,我使用Bundle bundle = getIntent().getExtras(); 从列表活动中传递列表名称。在列表活动中我使用了intent.putExtra("list_name", list_name);
【问题讨论】:
标签: java android sqlite android-sqlite