The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Udl - Universal Database Locator

BASE CLASS

Quiq::Hash

SYNOPSIS

Klasse laden:

  use Quiq::Udl;

Objekt instantiieren:

  my $udlStr = 'dbi#oracle:xyz%xyz_admin:koala3@pluto.gaga.de:1521';
  my $udl = Quiq::Udl->new($udlStr);

UDL aus Konfigurationsdatei:

  my $udl = Quiq::Udl->new('test-db');

UDL-Komponenten:

  print $udl->api,"\n";      # dbi
  print $udl->dbms,"\n";     # oracle
  print $udl->db,"\n";       # xyz
  print $udl->user,"\n";     # xyz_admin
  print $udl->password,"\n"; # koala3
  print $udl->host,"\n";     # pluto.gaga.de
  print $udl->port,"\n";     # 1521
  
  my $optionH = $udl->options;
  while (($key,$val) = each %$optionH) {
      print "$key=$val\n";
  }

UDL als String:

  print $udl->asString,"\n"; # $udlStr

DESCRIPTION

Ein Universal Database Locator (UDL) adressiert eine Datenbank, wie ein Universal Resource Locator eine Web-Resource adressiert.

Ein UDL hat den Aufbau:

  api#dbms:db%user:password@host:port;options

Ein Objekt der Klasse kapselt einen UDL und bietet Methoden, um auf die einzelnen Komponenten zuzugreifen. Kommen Metazeichen im Passwort oder den Options vor, können diese mit \ maskiert werden.

ATTRIBUTES

api => $str

Der Name der Schnittstelle (z.B. "dbi").

dbms => $str

Der Name der Datenbanksystems (z.B. oracle, postgresql, sqlite, mysql).

db => $str

Der Name der Datenbank.

user => $str

Der Name des Benutzers.

password => $str

Das Passwort des Benutzers.

host => $str

Der Name des Hosts, auf dem die Datenbank sich befindet.

port = $str

Der Port, über welchen die Netzverbindung aufgebaut wird.

options => \%hash

Referenz auf Hash mit optionalen Angaben.

METHODS

Konstruktor

new() - Instantiiere UDL-Objekt

Synopsis

  $udl = $class->new;
  $udl = $class->new($udlStr);
  $udl = $class->new(@keyVal);
  $udl = $class->new($name);

Arguments

$udlStr

UDL als Zeichenkette.

@keyVal

UDL-Komponenten.

$name

Name aus Konfigurationsdatei ~/.db.conf.

Returns

UDL-Objekt

Description

Instantiiere ein UDL-Objekt und liefere eine Referenz auf dieses Objekt zurück.

Akzessoren

api() - Setze/Liefere Wert des Attributs api

Synopsis

  $api = $udl->api;
  $api = $udl->api($api);

dbms() - Setze/Liefere Wert des Attributs dbms

Synopsis

  $dbms = $udl->dbms;
  $dbms = $udl->dbms($dbms);

db() - Setze/Liefere Wert des Attributs db

Synopsis

  $db = $udl->db;
  $db = $udl->db($db);

user() - Setze/Liefere Wert des Attributs user

Synopsis

  $user = $udl->user;
  $user = $udl->user($user);

password() - Setze/Liefere Wert des Attributs password

Synopsis

  $password = $udl->password;
  $password = $udl->password($password);

host() - Setze/Liefere Wert des Attributs host

Synopsis

  $host = $udl->host;
  $host = $udl->host($host);

port() - Setze/Liefere Wert des Attributs port

Synopsis

  $port = $udl->port;
  $port = $udl->port($port);

options() - Setze/Liefere Option-Hash

Synopsis

  $hash = $udl->options;
  $hash = $udl->options($str);
  $hash = $udl->options(@keyVal);
  $hash = $udl->options(\%hash);

Description

Setze/Liefere Hash mit den UDL-Optionen.

Klassenmethoden

split() - Setze/Liefere UDL als Ganzes

Synopsis

  ($api,$dbms,$db,$user,$password,$host,$port,$options) =
      $udl->split($udl);

Description

Zerlege den UDL $udl in seine Komponenten und liefere diese zurück. Für eine Komponente, die nicht im URL enthalten ist, wird ein Leerstring ('') geliefert.

Objektmethoden

apiClass() - API-Klasse

Synopsis

  $apiClass = $udl->apiClass;

Description

Liefere die Datanbank API-Klasse. Über diese findet intern der Verbindungsaufbau zur Datenbank statt.

Die API-Klasse für das DBI-API ist:

  Quiq::Database::Api::Dbi::Connection

asString() - UDL als String

Synopsis

  $udlStr = $udl->asString;

Options

-secure => $bool (Default: 0)

Ersetze das Passwort durch einen Stern.

components() - Komponenten des UDL

Synopsis

  ($api,$dbms,$db,$user,$password,$host,$port,$options) = $udl->components;

Description

Liefere die Komponenten des UDL in der oben angegebenen Reihenfolge.

dsn() - DBI DSN-String

Synopsis

  $dsn = $udl->dsn;

Description

Liefere den DSN-String, um per DBI->connect() eine Verbindung zur Datenbank aufzubauen.

udl() - Setze/Liefere UDL als Ganzes

Synopsis

  $udl->udl($udlStr);
  $udl->udl(@keyVal);
  $udlStr = $udl->udl;

Description

Liefere UDL oder setze UDL als Ganzes aus String oder Liste von Schlüssel/Wert-Paaren. Die Methode liefert keinen Wert zurück.

Der Aufruf ohne Parameter ist identisch zum Aufruf von asString().

VERSION

1.158

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.