NAME "DBIx::Admin::TableInfo" - A wrapper around DBI's table_info() and column_info() Synopsis use DBIx::Admin::TableInfo; my($dbh) = DBI -> connect ( 'DBI:mysql:mids:127.0.0.1', 'root', 'pass', { AutoCommit => 1, PrintError => 0, RaiseError => 1, ShowErrorStatement => 1, } ); my($admin) = DBIx::Admin::TableInfo -> new(dbh => $dbh); my($info) = $admin -> info(); for my $table_name (@{$admin -> tables()}) { print "Table: $table_name\n"; print "Table attributes\n"; for (sort keys %{$$info{$table_name}{'attributes'} }) { print "$_: $$info{$table_name}{'attributes'}{$_}\n"; } print "\n"; for my $column_name (@{$admin -> columns($table_name)}) { print "Column: $column_name\n"; print "Column attributes\n"; for (sort keys %{$$info{$table_name}{'columns'}{$column_name} }) { print "$_: $$info{$table_name}{'columns'}{$column_name}{$_}\n"; } print "\n"; } print "\n"; } Description "DBIx::Admin::TableInfo" is a pure Perl module. It is a wrapper around the DBI methods table_info() and column_info(). Distributions This module is available both as a Unix-style distro (*.tgz) and an ActiveState-style distro (*.ppd). The latter is shipped in a *.zip file. See http://savage.net.au/Perl-modules.html for details. See http://savage.net.au/Perl-modules/html/installing-a-module.html for help on unpacking and installing each type of distro. Constructor and initialization new(...) returns a "DBIx::Admin::TableInfo" object. This is the class's contructor. Usage: DBIx::Admin::TableInfo -> new(). This method takes a set of parameters. Only the dbh parameter is mandatory. For each parameter you wish to use, call new as new(param_1 => value_1, ...). column_catalog This is the value passed in as the catalog parameter to column_info(catalog, schema...). The default value is undef. undef was chosen because it given the best results with MySQL. The MySQL driver DBD::mysql V 2.9002 has a bug in it, in that it aborts if an empty string is used here, even though an empty string is used for the catalog parameter to table_info(). This parameter is optional. column_schema This is the value passed in as the schema parameter to column_info(catalog, schema...). The default value is undef. See above for comments about undef. This parameter is optional. dbh This is a database handle. This parameter is mandatory. table_catalog This is the value passed in as the catalog parameter to table_info(catalog, schema...). The default value is '' (the empty string). See above for comments about empty strings. This parameter is optional. table_schema This is the value passed in as the schema parameter to table_info(catalog, schema...). The default value is '' (the empty string). See above for comments about empty strings. This parameter is optional. Method: columns($table_name, $by_position) Returns an array ref of column names. By default they are sorted by name. However, if you pass in a true value for $by_position, they are sorted by the column attribute ORDINAL_POSITION. Method: info() Returns a hash ref of all available data. The structure of this hash is described next: First level: The keys are the names of the tables my($info) = $obj -> info(); my(@table_name) = sort keys %$info; I use singular names for my arrays, hence @table_name rather than @table_names. Second level: The keys are 'attributes' and 'columns' my($table_attributes) = $$info{$table_name}{'attributes'}; This is a hash ref of the table's attributes. my($columns) = $$info{$table_name}{'columns'}; This is a hash ref of the table's columns. Third level: Table attributes while ( ($name, $value) = each(%$table_attributes) ) { Use... } For the attributes of the tables, there are no more levels in the hash ref. Third level: The keys are the names of the columns. my(@column_name) = sort keys %$columns; Fourth level: Column attributes for $column_name (@column_name) { while ( ($name, $value) = each(%{$columns{$column_name} }) ) { Use... } } Method: tables() Returns an array ref of table names. They are sorted by name. Example code See the examples/ directory in the distro. There are 2 demo programs: test-admin-info.cgi It outputs all possible info in HTML. test-admin-info.pl It outputs all possible info in text. Related Modules I have written a set of modules - which are still being tested - under the DBIx::Admin::* namespace. These will be released shortly, but the first release will only be for demonstration purposes. They are based around the Model-View-Controller pattern. DBIx::Admin is the Controller, DBIx::Admin::Model is the Model, and yes, DBIx::Admin::View is the Viewer. They will form the core of myadmin.cgi V 2. See http://savage.net.au/Perl-tutorials.html#tut_35 Required Modules Carp. Changes See Changes.txt. Author "DBIx::Admin::TableInfo" was written by Ron Savage ** in 2004. Home page: http://savage.net.au/index.html Copyright Australian copyright (c) 2004, Ron Savage. All rights reserved. All Programs of mine are 'OSI Certified Open Source Software'; you can redistribute them and/or modify them under the terms of The Artistic License, a copy of which is available at: http://www.opensource.org/licenses/index.html