NAME

Prty::Udl - Universal Database Locator

BASE CLASS

Prty::Hash

SYNOPSIS

Klasse laden:

use Prty::Udl;

Objekt instantiieren:

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

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.

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() - Konstruktor

Synopsis

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

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:

Prty::Database::Api::Dbi::Connection

asString() - UDL als String

Synopsis

$udlStr = $udl->asString;

Options

-secure => $bool (Default: 0)

Ersetze das Passwort durch (fünf) Sterne.

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.122

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2018 Frank Seitz

LICENSE

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