exec method

  1. @override
Future<Changes> exec({
  1. Iterable? parameters,
  2. bool reusable = false,
})

Executes a query such as INSERT or UPDATE with or without parameter.

Implementation

@override
Future<sql.Changes> exec({Iterable<dynamic>? parameters, bool reusable = false}) async {
  Statement._ensureStatementAndDatabaseOpen(this);
  // bind parameter is available
  if (parameters != null && parameters.isNotEmpty || parameterCount > 0) {
    Statement._bindParameters(this, parameters);
  }

  int resultCode;
  do {
    resultCode = Driver.binder.step(_stmt!);
  } while (resultCode == sqlite.ROW || resultCode == sqlite.OK);
  _initState = false;

  // something wrong
  if (resultCode != sqlite.DONE) {
    // close right away when user specified once
    close();
    throw SQLiteException(cdb: _db._db!, returnCode: resultCode);
  } else if (!reusable) {
    close();
  }
  return Changes._(_db);
}