[英]How can I know if row is exist in flutter sqflite?
我必须知道特定行是存在的,其中uidCol
列aaa
中tagtable
。 但我不知道所以我只是使用try~catch
块。
我想要做的是检查本地数据库,如果没有数据,则从 firestore 获取。
我在做什么就像下面
try {
await db.rawQuery('SELECT * FROM tagTable WHERE uidCol="aaa"');
} catch(exception){
await _fetchTagsFromFirestore().catchError((e){
print('FATAL ERROR: ${e.toString()}');
return FETCH_RESULT.FAILURE;
});
}
但我认为检查行是否存在不是正确的方法。 我该如何妥善处理?
我假设您想检查数据库中是否存在符合指定条件的记录,如果确实存在则执行某些操作。
从数据库中获取结果并存储在查询结果中: var queryResult = await db.rawQuery('SELECT * FROM tagTable WHERE uidCol="aaa"');
检查结果是否为空:
result.isNotEmpty ? //do something if the result is not empty here
: []; //else return empty list
试试这个它对我有用
var db= DatabaseHelper();
Future<int> getcount(id) async {
var dbclient = await db;
int count = Sqflite.firstIntValue(
await dbclient.rawQuery("SELECT COUNT(*) FROM $cartTable WHERE $columnid=$id"));
return count;
}
您可以使用EXISTS
检查是否存在任何记录
Future<bool> uidExists() async {
var result = await _database.rawQuery(
'SELECT EXISTS(SELECT 1 FROM tagTable WHERE uidCol="aaa")',
);
int exists = Sqflite.firstIntValue(result);
return exists == 1;
}
我知道为时已晚,但这是对其他人的简单解决方案:
Future<YourModel> checkValue(key) async {
List<Map> maps = await db.query(your_table_name,
columns: [
columnId,
columnKey,
columnTitle,
],
where: '$columnKey = ?',
whereArgs: [key]);
if (maps.length > 0) {
return MainItem.fromMap(maps.first);
}
return null;
}
并使用此方法:
bool isExist = checkValue("your_key") != null;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.