source: trunk/examples/demo/sql/sqlex.ui.h@ 203

Last change on this file since 203 was 160, checked in by dmik, 19 years ago

Imported table and iconview modules and a bunch of dependent examples from the official release 3.3.1 from Trolltech.

  • Property svn:keywords set to Id
File size: 4.2 KB
Line 
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
20static 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
30ConnectDialog* conDiag = 0;
31
32void 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
40void 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
90void 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
112void 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}
Note: See TracBrowser for help on using the repository browser.