public function prepare(string $statement, array $driverOptions = []): Statement
    {
        if (null === $this->pdo) {
            $this->connect();
        }

        try {
            return new PdoStatement(
                    $this->pdo->prepare($statement, $driverOptions)
            );
        } catch (PDOException $pdoe) {
            throw new DatabaseException($pdoe->getMessage(), $pdoe);
        }
    }