我怎么知道在flft sqflite中是否存在行?

时间:2019-02-15 00:26:45

标签: sql dart flutter sqflite

我必须知道在uidColaaa列为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;
  });
}

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

3 个答案:

答案 0 :(得分:0)

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

从数据库中获取结果并将其存储在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

答案 1 :(得分:0)

尝试一下对我有用的

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

答案 2 :(得分: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;
}