C 15
Sqlex.ui.h Guest on 4th April 2021 04:38:10 AM
  1. /****************************************************************************
  2. ** ui.h extension file, included from the uic-generated form implementation.
  3. **
  4. ** If you wish to add, delete or rename slots use Qt Designer which will
  5. ** update this file, preserving your code. Create an init() slot in place of
  6. ** a constructor, and a destroy() slot in place of a destructor.
  7. *****************************************************************************/
  8. #include <qsqldriver.h>
  9. #include <qmessagebox.h>
  10. #include <qsqldatabase.h>
  11. #include <qlineedit.h>
  12. #include <qcombobox.h>
  13. #include <qspinbox.h>
  14. #include <qsqlerror.h>
  15. #include <qsqlcursor.h>
  16. #include <qsqlselectcursor.h>
  17. #include <qdatatable.h>
  18. #include "connect.h"
  19.  
  20. static void showError( const QSqlError& err, QWidget* parent = 0 )
  21. {
  22.    QString errStr ( "The database reported an error\n" );
  23.     if ( !err.databaseText().isEmpty() )
  24.     errStr += err.databaseText();
  25.     if ( !err.driverText().isEmpty() )
  26.     errStr += err.driverText();
  27.     QMessageBox::warning( parent, "Error", errStr );
  28. }
  29.  
  30. ConnectDialog* conDiag = 0;
  31.  
  32. void SqlEx::init()
  33. {
  34.     hsplit->setResizeMode( lv, QSplitter::KeepSize );
  35.     vsplit->setResizeMode( gb, QSplitter::KeepSize );
  36.     submitBtn->setEnabled( FALSE );
  37.     conDiag = new ConnectDialog( this, "Connection Dialog", TRUE );    
  38. }
  39.  
  40. void SqlEx::dbConnect()
  41. {
  42.     if ( conDiag->exec() != QDialog::Accepted )
  43.     return;
  44.     if ( dt->sqlCursor() ) {
  45.     dt->setSqlCursor( 0 );
  46.     }
  47.     // close old connection (if any)
  48.     if ( QSqlDatabase::contains( "SqlEx" ) ) {
  49.     QSqlDatabase* oldDb = QSqlDatabase::database( "SqlEx" );
  50.     oldDb->close();
  51.     QSqlDatabase::removeDatabase( "SqlEx" );
  52.     }
  53.     // open the new connection
  54.     QSqlDatabase* db = QSqlDatabase::addDatabase( conDiag->comboDriver->currentText(), "SqlEx" );
  55.     if ( !db ) {
  56.     QMessageBox::warning( this, "Error", "Could not open database" );  
  57.     return;
  58.     }
  59.     db->setHostName( conDiag->editHostname->text() );
  60.     db->setDatabaseName( conDiag->editDatabase->text() );
  61.     db->setPort( conDiag->portSpinBox->value() );
  62.     if ( !db->open( conDiag->editUsername->text(), conDiag->editPassword->text() ) ) {
  63.     showError( db->lastError(), this );
  64.     return;
  65.     }
  66.     lbl->setText( "Double-Click on a table-name to view the contents" );
  67.     lv->clear();
  68.    
  69.     QStringList tables = db->tables();
  70.     for ( QStringList::Iterator it = tables.begin(); it != tables.end(); ++it ) {
  71.     QListViewItem* lvi = new QListViewItem( lv, *it );
  72.     QSqlRecordInfo ri = db->recordInfo ( *it );
  73.     for ( QSqlRecordInfo::Iterator it = ri.begin(); it != ri.end(); ++it ) {
  74.         QString req;
  75.         if ( (*it).isRequired() > 0 ) {
  76.         req = "Yes";
  77.         } else if ( (*it).isRequired() == 0 ) {
  78.         req = "No";
  79.         } else {
  80.         req = "?";
  81.         }
  82.         QListViewItem* fi = new QListViewItem( lvi, (*it).name(),  + QVariant::typeToName( (*it).type() ), req );
  83.         lvi->insertItem( fi );
  84.     }
  85.     lv->insertItem( lvi ); 
  86.     }
  87.     submitBtn->setEnabled( TRUE );
  88. }
  89.  
  90. void SqlEx::execQuery()
  91. {
  92.     // use a custom cursor to populate the data table
  93.     QSqlSelectCursor* cursor = new QSqlSelectCursor( te->text(), QSqlDatabase::database( "SqlEx", TRUE ) );
  94.     if ( cursor->isSelect() ) {
  95.     dt->setSqlCursor( cursor, TRUE, TRUE );
  96.     dt->setSort( QStringList() );
  97.     dt->refresh( QDataTable::RefreshAll );
  98.     QString txt( "Query OK" );
  99.     if ( cursor->size() >= 0 )
  100.         txt += ", returned rows: " + QString::number( cursor->size() );
  101.     lbl->setText( txt );
  102.     } else {
  103.     // an error occured if the cursor is not active
  104.     if ( !cursor->isActive() ) {
  105.         showError( cursor->lastError(), this );
  106.     } else {
  107.         lbl->setText( QString("Query OK, affected rows: %1").arg( cursor->numRowsAffected() ) );
  108.     }
  109.     }
  110. }
  111.  
  112. void SqlEx::showTable( QListViewItem * item )
  113. {
  114.     // get the table name
  115.     QListViewItem* i = item->parent();
  116.     if ( !i ) {
  117.     i = item;
  118.     }
  119.  
  120.     // populate the data table
  121.     QSqlCursor* cursor = new QSqlCursor( i->text( 0 ), TRUE, QSqlDatabase::database( "SqlEx", TRUE ) );
  122.     dt->setSqlCursor( cursor, TRUE, TRUE );
  123.     dt->setSort( cursor->primaryIndex() );
  124.     dt->refresh( QDataTable::RefreshAll );
  125.     lbl->setText( "Displaying table " + i->text( 0 ) );
  126. }

Paste-bin is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.