3

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;
  });
}

但我认为检查行是否存在不是正确的方法。我该如何妥善处理?

4

4 回答 4

6

我假设您想检查数据库中是否存在具有指定条件的记录,如果确实存在则执行某些操作。

从数据库中获取结果并存储在 queryResult 中: 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
于 2019-02-15T10:09:49.790 回答
4

试试这个它对我有用

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;
      }
于 2020-05-24T08:14:44.003 回答
0

您可以使用检查是否存在任何记录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;
}
于 2021-04-26T08:00:03.880 回答
0

我知道为时已晚,但对于其他人来说,这是一个简单的解决方案:

  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;
于 2021-11-22T11:31:35.530 回答