我正在制作一个应用程序,其中mainactivity有一个recyclerview,其中包含用户的列表,例如杂货店列表、每周列表等。
当用户单击某个项目时,它将导航到“产品”活动,该活动还有一个recyclerview。我有两个不同的sqlite数据库1:列表2:产品。
我使用的逻辑是,当用户添加一个列表时,列表数据库将记录列表名称和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);`
1条答案
按热度按时间pepwfjgg1#
传递字符串的值
list_name
在sql语句中被引用,因此它被认为是一个列名。使用
?
查询和传递中的占位符list_name
作为rawQuery()
:这样您就不必担心引用传递给查询的参数。