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

NAME

UnixODBC::DriverConf - Properties for UnixODBC drivers.

SYNOPSIS

    use UnixODBC qw(:all);
    use UnixODBC::DriverConf qw(:all);


    # Object-oriented Interface

    my $self = new UnixODBC::DriverConf;

    $self -> ConstructProperties ($driver);

    # Methods for accessing properties
    $self -> Values;
    $self -> Help;
    $self -> PromptType;
    $self -> PromptData;

    # Configuration Modes
    $self -> SQLSetConfigMode ($mode);
    $mode = $self -> SQLGetConfigMode ();

    my @drivers = $self -> SQLGetInstalledDrivers ();
    my @drivers = $self -> SQLGetAvailableDrivers ();

    $r = $self -> SQLValidDSN ($dsn);

    $confpath = $self -> odbcinst_system_file_path ();

    $s = $self -> GetProfileString ($section, $keyword, $filename);
    $self -> WriteProfileString ($section, $newprofilestring, $filename);

    @dsn = $self -> GetDSN ($name, $filename);
    $self -> WriteDSN (\@template, $filename);
    

    # Procedural Interface

    my @drivers = SQLGetInstalledDrivers ();
    # Synonym for SQLGetInstalledDrivers ();
    my @drivers = SQLGetAvailableDrivers ();

    $r = SQLValidDSN ($dsn);

    $confpath = odbcinst_system_file_path ();
    @dsn = GetDSN ($name, $filename);
    WriteDSN (\@template, $filename);

DESCRIPTION

UnixODBC::DriverConf extracts and accesses properties of driver-specific libraries, and provides procedural interfaces for libodbcinst's configuration functions.

UnixODBC Configuration

Each ODBC-accessible DBMS has an ODBC driver defined for it. The file odbcinst.ini contains site-specific values for each property. Properties and their values depend on the DBMS server's Application Programming Interface.

Each ODBC accessible database must have a Data Source Name defined for it. DSNs are contained in the file, odbc.ini. Each DSN specifies driver and configuration libraries, a database name, and the host name. Additional values depend on the properties defined by the driver library.

The function, odbcinst_system_file_path (), returns the directory of odbcinst.ini and odbc.ini.

ConstructProperties () retrieves driver properties. The methods, Values (), Help (), PromptType (), and PromptData (), return the each property's value, documentation string, prompt type, and prompt data.

This program lists the properties of a PostgreSQL driver and their values.

  use UnixODBC qw(:all);
  use UnixODBC::DriverConf qw(:all);

  my $self = new UnixODBC::DriverConf;
  $self -> ConstructProperties ('PostgreSQL 7.x');

  foreach (keys %{$self -> Values}) { print "$_ = ". 
                 $self -> Values -> {$_} . "\n"; }

This is the program's output.

   Description = PostgreSQL 7.x
   TraceFile = 
   Password = 
   Protocol = 6.4
   Name = 
   Servername = localhost
   Driver = PostgreSQL 7.x
   Trace = No
   ShowOidColumn = No
   ShowSystemTables = No
   Database = 
   Port = 5432
   FakeOidIndex = No
   Username = 
   RowVersioning = No
   ReadOnly = No
   ConnSettings = 

DSN and driver section headings in odbc.ini and odbcinst.ini are delimited by brackets. An example odbcinst.ini section for a MySQL-MyODBC Driver is given below.

  [MySQL 3.23.49]
  Description   = MySQL-MyODBC Sample - Edit for your system.
  Driver        = /usr/local/lib/libmyodbc3-3.51.02.so
  Setup         = /usr/local/lib/libodbcmyS.so.1.0.0
  FileUsage     = 1
  CPTimeout     = 
  CPReuse       = 

A DSN named definition that uses the driver is shown here.

  [Contacts]
  Description   = Names and Addresses Sample - Edit for your system.
  Driver        = MySQL 3.23.49
  Server        = localhost
  Port          = 3396
  Socket        = /tmp/mysql.sock
  Database      = Contacts

An odbc.ini entry for a DSN that defines values the PostgreSQL driver library properties is shown here.

  [Postgresql]
  Description           = Sample DSN - Edit for your system.
  Driver                = PostgreSQL 7.x
  Trace                 = No
  TraceFile             = 
  Database              = gutenberg
  Servername            = localhost
  Username              = postgres
  Password              = postgres
  Port                  = 5432
  Protocol              = 6.4
  ReadOnly              = No
  RowVersioning         = No
  ShowSystemTables      = No
  ShowOidColumn         = No
  FakeOidIndex          = No
  ConnSettings          = 
  Server                = localhost

FUNCTIONS

ConstructProperties (driver)

Retrieve the driver properties. This method is not automatically called by new ().

  $self -> ConstructProperties ($driver);

GetDSN (dsn, filename)

Returns a list of the template of dsn from filename.

    my @dsn = $self -> GetDSN ('mydsn', '/usr/local/etc/odbc.ini');

GetProfileString (section, keyword, conffile)

Return a profile string.

  $s = $self -> GetProfileString ($driver, $keyword, $conffile);

Help ()

Return a hash of properties' documentation strings, if any.

    %docs = $self -> Help;

new ()

UnixODBC::DriverConf constructor.

  my $self = new UnixODBC::DriverConf;

PromptData ()

Return default values for each property, if any. Each value is separated by a newline ("\n");

  # Default values for "Protocol" property.
  my %promptdefaults = $self -> PromptData;
  foreach (split "\n", $prompromptdefaults{Protocol}) { print "$_\n"; }

PromptType ()

Return type of each prompt. The type can be

  $ODBCINST_PROMPTTYPE_LABEL 
  $ODBCINST_PROMPTTYPE_TEXTEDIT
  $ODBCINST_PROMPTTYPE_LISTBOX 
  $ODBCINST_PROMPTTYPE_COMBOBOX
  $ODBCINST_PROMPTTYPE_FILENAME 
  $ODBCINST_PROMPTTYPE_HIDDEN

  $self -> PromptType;

SQLGetAvailableDrivers ()

A synonym for "SQLGetInstalledDrivers ()".

SQLGetConfigMode ()

  Return the libodbcinst configuration mode.  Mode may be one of:

  $ODBC_BOTH_DSN
  $ODBC_USER_DSN
  $ODBC_SYSTEM_DSN

  $mode = $self -> SQLGetConfigMode; 

SQLGetInstalledDrivers ()

Returns a list of installed drivers.

  # List the installed ODBC drivers
  my @drivers = SQLGetInstalledDrivers ();
  foreach (@drivers) {print "$_\n";}

SQLSetConfigMode (mode)

Set the UnixODBC configuration mode. The parameter may be one of:

  $ODBC_BOTH_DSN
  $ODBC_USER_DSN
  $ODBC_SYSTEM_DSN

SQLValidDSN (dsnname)

Returns true if dsnname has a length > 0 and does not contain the following characters: '[', ']', '{', '}', '(', ')', ',', ';', '?', '*', '=', '!', '@', or '\'. Returns false otherwise.

odbcinst_system_file_path ();

Return the directory name of the unixODBC configuration files.

WriteProfileString (section, newprofilestring, conffile)

Write a profile string to conffile.

  $self -> WriteProfileString ($section, $newprofilestring, $conffile);

Values ()

Return a hash of values for each property.

  %values = $self -> Values;

WriteDSN (templateref, filename)

Writes the template array reference templateref to filename.

  my $template = ['[MyDSN]', 
                  'prop1 = val1',
                  'prop2 = val2',
                  'prop3 = val3'];

  $self -> WriteDSN ($template, '/usr/local/etc/odbc.ini');

EXPORTS

See @EXPORT_OK in UnixODBC::DriverConf.pm.

VERSION

Version 0.02

COPYRIGHT

Copyright © 2004-2005, 2008 Robert Kiesling, rkies@cpan.org.

Licensed under the same terms as Perl. Refer to the file, "Artistic," for details.

SEE ALSO

UnixODBC(3)

1 POD Error

The following errors were encountered while parsing the POD:

Around line 345:

Non-ASCII character seen before =encoding in '©'. Assuming CP1252