connect method

Future<Result<Connection>> connect(
  1. String connectionString, {
  2. ConnectionOptions? options,
})

Establishes a new database connection.

The connectionString must be a non-empty ODBC connection string (e.g., 'DSN=MyDatabase' or 'Driver={SQL Server};Server=...'). options can specify connection/login timeout.

Automatically initializes the ODBC environment if not already initialized. Returns a Connection on success or a ValidationError if the connection string is empty, or a ConnectionError if connection fails.

Implementation

Future<Result<Connection>> connect(
  String connectionString, {
  ConnectionOptions? options,
}) async {
  if (connectionString.trim().isEmpty) {
    return const Failure<Connection, OdbcError>(
      ValidationError(message: 'Connection string cannot be empty'),
    );
  }

  if (!_repository.isInitialized()) {
    final initResult = await _repository.initialize();
    final initError = initResult.exceptionOrNull();
    if (initError != null) {
      if (initError is OdbcError) {
        return Failure<Connection, OdbcError>(initError);
      }
      return Failure<Connection, OdbcError>(
        ConnectionError(message: initError.toString()),
      );
    }
  }

  return _repository.connect(connectionString, options: options);
}