exec method

  1. @override
Future<Changes> exec(
  1. String sql, {
  2. Iterable? parameters,
})

Quick execution of sql query without holding any statment object.

Implementation

@override
Future<sql.Changes> exec(String sql, {Iterable<dynamic>? parameters}) async {
  if (parameters != null && parameters.isNotEmpty) {
    final stmt = (await prepare(sql)).write();
    return await stmt.exec(parameters: parameters, reusable: false);
  } else {
    final errmsg = sqlite.malloc<sqlite.Pointer<sqlite.Utf8>>();
    final resultCode = Driver.binder.exec(_db!, sql, sqlite.nullptr, sqlite.nullptr, errmsg);
    if ((errmsg.value != sqlite.nullptr || errmsg.value.address != 0) &&
        resultCode != sqlite.OK) {
      final msg = errmsg.value.toDartString();
      sqlite.free(errmsg);
      throw SQLiteException(cdb: _db!, message: msg, returnCode: resultCode);
    }
    sqlite.free(errmsg);
    return Changes._(this);
  }
}