Added get_system_tables function to db classes, added _manip subclasses to mysql and pgsql

This commit is contained in:
Timothy Warren 2012-02-10 13:13:19 -05:00
parent 9d4d2a38d9
commit bf0001ad7d
8 changed files with 105 additions and 10 deletions

View File

@ -26,12 +26,6 @@ abstract class DB_PDO extends PDO {
function __construct($dsn, $username=NULL, $password=NULL, $driver_options=array()) function __construct($dsn, $username=NULL, $password=NULL, $driver_options=array())
{ {
parent::__construct($dsn, $username, $password, $driver_options); parent::__construct($dsn, $username, $password, $driver_options);
if(__CLASS__ !== "DB_PDO")
{
$class = __CLASS__.'_manip';
$this->manip = new $class;
}
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@ -142,6 +136,15 @@ abstract class DB_PDO extends PDO {
* @return int * @return int
*/ */
abstract function num_rows(); abstract function num_rows();
/**
* Retreives an array of non-user-created tables for
* the connection/database
*
* @return array
*/
abstract function get_system_tables();
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------

View File

@ -132,7 +132,7 @@ class firebird {
/** /**
* List tables for the current database * List tables for the current database
* *
* @return mixed * @return array
*/ */
function get_tables() function get_tables()
{ {
@ -151,6 +151,29 @@ class firebird {
return $tables; return $tables;
} }
/**
* List system tables for the current database
*
* @return array
*/
function get_system_tables()
{
$sql='SELECT RDB$RELATION_NAME as "rn" FROM "RDB$RELATIONS"
WHERE "rn" LIKE \'RDB$\'
OR "rn" LIKE \'RDB$\'';
$this->statement = $this->query($sql);
$tables = array();
while($row = $this->fetch(PDO::FETCH_ASSOC))
{
$tables[] = $row['RDB$RELATION_NAME'];
}
return $tables;
}
/** /**
* Return the number of rows affected by the previous query * Return the number of rows affected by the previous query
* *

View File

@ -35,6 +35,9 @@ class MySQL extends DB_PDO {
$options); $options);
parent::__construct("mysql:$dsn", $username, $password, $options); parent::__construct("mysql:$dsn", $username, $password, $options);
$class = __CLASS__.'_manip';
$this->manip = new $class;
} }
/** /**
@ -69,6 +72,17 @@ class MySQL extends DB_PDO {
return $res->fetchAll(PDO::FETCH_ASSOC); return $res->fetchAll(PDO::FETCH_ASSOC);
} }
/**
* Returns system tables for the current database
*
* @return array
*/
function get_system_tables()
{
//MySQL doesn't have system tables
return array();
}
/** /**
* Return the number of rows returned for a SELECT query * Return the number of rows returned for a SELECT query
* *

View File

@ -37,6 +37,17 @@ class ODBC extends DB_PDO {
return FALSE; return FALSE;
} }
/**
* List system tables for the current database/connection
*
* @return array
*/
function get_system_tables()
{
//No way of determining for ODBC
return array();
}
/** /**
* Empty the current database * Empty the current database
* *

View File

@ -30,6 +30,10 @@ class pgSQL extends DB_PDO {
function __construct($dsn, $username=null, $password=null, $options=array()) function __construct($dsn, $username=null, $password=null, $options=array())
{ {
parent::__construct("pgsql:$dsn", $username, $password, $options); parent::__construct("pgsql:$dsn", $username, $password, $options);
//Get db manip class
$class = __CLASS__.'_manip';
$this->manip = new $class;
} }
/** /**
@ -71,9 +75,43 @@ class pgSQL extends DB_PDO {
$res = $this->query($sql); $res = $this->query($sql);
$dbs = $res->fetchAll(PDO::FETCH_ASSOC); $tables = $res->fetchAll(PDO::FETCH_ASSOC);
return $dbs; return $tables;
}
/**
* Get the list of system tables
*
* @return array
*/
function get_system_tables()
{
$sql = 'SELECT "tablename" FROM "pg_tables"
WHERE "tablename" LIKE \'pg\_%\'
OR "tablename" LIKE \'sql\%\'';
$res = $this->query($sql);
$tables = $res->fetchAll(PDO::FETCH_ASSOC);
return $tables;
}
/**
* Get a list of schemas, either for the current connection, or
* for the current datbase, if specified.
*
* @param string $database=""
* @return array
*/
function get_schemas($database="")
{
$sql = 'SELECT ';
$res = $this->query($sql);
$schemas = $res->fetchAll(PDO::FETCH_ASSOC);
} }
/** /**

View File

@ -65,6 +65,11 @@ class SQLite extends DB_PDO {
return $tables; return $tables;
} }
function get_system_tables()
{
}
/** /**
* Return the number of rows returned for a SELECT query * Return the number of rows returned for a SELECT query
* *

View File

@ -93,7 +93,8 @@ class Add_DB extends GtkWindow {
{ {
$add_button = new GtkButton(); $add_button = new GtkButton();
$add_button->set_label("Add Connnection"); $add_button->set_label("Add Connnection");
$add_button->set_image(GTKImage::new_from_stock(GTK::STOCK_ADD, Gtk::ICON_SIZE_SMALL_TOOLBAR)); $add_button->set_image(GTKImage::new_from_stock(GTK::STOCK_ADD,
Gtk::ICON_SIZE_SMALL_TOOLBAR));
$table->attach($add_button, 0, 3, ++$y1, ++$y2); $table->attach($add_button, 0, 3, ++$y1, ++$y2);
$add_button->connect_simple("clicked", array($this, 'db_add')); $add_button->connect_simple("clicked", array($this, 'db_add'));
} }

Binary file not shown.