Database constructor

Database(
  1. String path, [
  2. int flags = Flags.SQLITE_OPEN_READWRITE | Flags.SQLITE_OPEN_CREATE
])

Open a database located at the file path.

Implementation

Database(String path,
    [int flags = Flags.SQLITE_OPEN_READWRITE | Flags.SQLITE_OPEN_CREATE]) {
  Pointer<Pointer<types.Database>> dbOut = calloc();
  final pathC = path.toNativeUtf8();
  final int resultCode =
      bindings.sqlite3_open_v2(pathC, dbOut, flags, nullptr);
  _database = dbOut.value;
  calloc.free(dbOut);
  calloc.free(pathC);

  if (resultCode == Errors.SQLITE_OK) {
    _open = true;
  } else {
    // Even if "open" fails, sqlite3 will still create a database object. We
    // can just destroy it.
    SQLiteException exception = _loadError(resultCode);
    close();
    throw exception;
  }
}