繁体   English   中英

我如何知道 flutter sqflite 中是否存在行?

[英]How can I know if row is exist in flutter sqflite?

我必须知道特定行是存在的,其中uidColaaatagtable 但我不知道所以我只是使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM