【问题标题】:How to use prepared statements in Sqflite for Flutter如何在 Sqflite for Flutter 中使用准备好的语句
【发布时间】:2019-10-18 15:53:42
【问题描述】:

如何在 Flutter 的 Sqflite 中使用准备好的语句? 它似乎缺少某些功能,或者只是排列方式完全不同。 目前,我使用的是标准 rawInsert,但我的字符串有时会破坏查询。

【问题讨论】:

    标签: sqlite flutter dart sqflite


    【解决方案1】:

    我正在使用带有 rawInsert 的事务。如果存在现有记录,则在此代码中插入将被忽略。

    return await Storage.database.transaction((txn) async {
          await txn.rawInsert('INSERT OR IGNORE INTO $tableName(id, sender_id, recipient_id, message_id, message)' + 'VALUES("$id", "$senderId", "$recipientId", "$messageId", "$message")');
    }).catchError((e) {
          throw (e);
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用问号语法。

      db.rawQuery("SELECT * FROM t WHERE c = ?", [myString]);
      

      【讨论】:

      • 又是如何导致语句在未来被准备和重用的?
      • @Andrew 据我所知,它没有得到准备和重用。如果你想要低级控制,你可以看看:pub.dev/packages/sqlite3 虽然,根据 Flutter 上基于大量 Sqlite 应用程序的经验,你真的不需要太关心 PreparedStatements。性能一直很好(50K+ 行表和多个连接)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多