diff options
Diffstat (limited to 'examples/demo/sql/sqlex.ui.h')
-rw-r--r-- | examples/demo/sql/sqlex.ui.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/examples/demo/sql/sqlex.ui.h b/examples/demo/sql/sqlex.ui.h new file mode 100644 index 000000000..b8e88ca91 --- /dev/null +++ b/examples/demo/sql/sqlex.ui.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** ui.h extension file, included from the uic-generated form implementation. +** +** If you wish to add, delete or rename slots use TQt Designer which will +** update this file, preserving your code. Create an init() slot in place of +** a constructor, and a destroy() slot in place of a destructor. +*****************************************************************************/ +#include <qsqldriver.h> +#include <qmessagebox.h> +#include <qsqldatabase.h> +#include <qlineedit.h> +#include <qcombobox.h> +#include <qspinbox.h> +#include <qsqlerror.h> +#include <qsqlcursor.h> +#include <qsqlselectcursor.h> +#include <qdatatable.h> +#include "connect.h" + +static void showError( const TQSqlError& err, TQWidget* parent = 0 ) +{ + TQString errStr ( "The database reported an error\n" ); + if ( !err.databaseText().isEmpty() ) + errStr += err.databaseText(); + if ( !err.driverText().isEmpty() ) + errStr += err.driverText(); + TQMessageBox::warning( parent, "Error", errStr ); +} + +ConnectDialog* conDiag = 0; + +void SqlEx::init() +{ + hsplit->setResizeMode( lv, TQSplitter::KeepSize ); + vsplit->setResizeMode( gb, TQSplitter::KeepSize ); + submitBtn->setEnabled( FALSE ); + conDiag = new ConnectDialog( this, "Connection Dialog", TRUE ); +} + +void SqlEx::dbConnect() +{ + if ( conDiag->exec() != TQDialog::Accepted ) + return; + if ( dt->sqlCursor() ) { + dt->setSqlCursor( 0 ); + } + // close old connection (if any) + if ( TQSqlDatabase::contains( "SqlEx" ) ) { + TQSqlDatabase* oldDb = TQSqlDatabase::database( "SqlEx" ); + oldDb->close(); + TQSqlDatabase::removeDatabase( "SqlEx" ); + } + // open the new connection + TQSqlDatabase* db = TQSqlDatabase::addDatabase( conDiag->comboDriver->currentText(), "SqlEx" ); + if ( !db ) { + TQMessageBox::warning( this, "Error", "Could not open database" ); + return; + } + db->setHostName( conDiag->editHostname->text() ); + db->setDatabaseName( conDiag->editDatabase->text() ); + db->setPort( conDiag->portSpinBox->value() ); + if ( !db->open( conDiag->editUsername->text(), conDiag->editPassword->text() ) ) { + showError( db->lastError(), this ); + return; + } + lbl->setText( "Double-Click on a table-name to view the contents" ); + lv->clear(); + + TQStringList tables = db->tables(); + for ( TQStringList::Iterator it = tables.begin(); it != tables.end(); ++it ) { + TQListViewItem* lvi = new TQListViewItem( lv, *it ); + TQSqlRecordInfo ri = db->recordInfo ( *it ); + for ( TQSqlRecordInfo::Iterator it = ri.begin(); it != ri.end(); ++it ) { + TQString req; + if ( (*it).isRetquired() > 0 ) { + req = "Yes"; + } else if ( (*it).isRetquired() == 0 ) { + req = "No"; + } else { + req = "?"; + } + TQListViewItem* fi = new TQListViewItem( lvi, (*it).name(), + TQVariant::typeToName( (*it).type() ), req ); + lvi->insertItem( fi ); + } + lv->insertItem( lvi ); + } + submitBtn->setEnabled( TRUE ); +} + +void SqlEx::execQuery() +{ + // use a custom cursor to populate the data table + TQSqlSelectCursor* cursor = new TQSqlSelectCursor( te->text(), TQSqlDatabase::database( "SqlEx", TRUE ) ); + if ( cursor->isSelect() ) { + dt->setSqlCursor( cursor, TRUE, TRUE ); + dt->setSort( TQStringList() ); + dt->refresh( TQDataTable::RefreshAll ); + TQString txt( "Query OK" ); + if ( cursor->size() >= 0 ) + txt += ", returned rows: " + TQString::number( cursor->size() ); + lbl->setText( txt ); + } else { + // an error occured if the cursor is not active + if ( !cursor->isActive() ) { + showError( cursor->lastError(), this ); + } else { + lbl->setText( TQString("Query OK, affected rows: %1").arg( cursor->numRowsAffected() ) ); + } + } +} + +void SqlEx::showTable( TQListViewItem * item ) +{ + // get the table name + TQListViewItem* i = item->parent(); + if ( !i ) { + i = item; + } + + // populate the data table + TQSqlCursor* cursor = new TQSqlCursor( i->text( 0 ), TRUE, TQSqlDatabase::database( "SqlEx", TRUE ) ); + dt->setSqlCursor( cursor, TRUE, TRUE ); + dt->setSort( cursor->primaryIndex() ); + dt->refresh( TQDataTable::RefreshAll ); + lbl->setText( "Displaying table " + i->text( 0 ) ); +} |