Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Databases & Qt Μανούσης Πέτρος ΑΜ: 862

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Databases & Qt Μανούσης Πέτρος ΑΜ: 862"— Μεταγράφημα παρουσίασης:

1 Databases & Qt Μανούσης Πέτρος ΑΜ: 862 pmanousis@mycosmos.gr

2 Παράδειγμα ● Στη συνέχεια θα ακολουθήσει ένα παράδειγμα για το πως μπορούμε να χρησιμοποιήσουμε την Qt library και τα εργαλεία που παρέχονται μαζί της -όπως είναι το Designer- ώστε να παράγουμε κώδικα για να διαχειριζόμαστε τις εγγραφές μιας βάσης δεδομένων.

3 Δημιουργία Login φόρμας ● Στη φόρμα αυτή ζητούμε από το χρήστη να εισάγει το user name και το password που του έχει δοθεί από το διαχειριστή της βάσης ώστε να σιγουρευτούμε πως ο άνθρωπος που τρέχει την εφαρμογή, έχει δικαίωμα να “κάνει” ερωτήσεις στη βάση.

4 Σχεδίαση φόρμας ● Στο διπλανό παράθυρο εμφανίζεται η φόρμα που περιγράψαμε προηγουμένως.

5 Σχεδίαση φόρμας ● Στο username_lineEdit ο χρήστης γράφει το username του, ενώ στο password_lineEdit γράφει τον κωδικό του, γι αυτό και εμφανίζονται “*” αντί συμβόλων.

6 Συνδέσεις ● Στην παραπάνω φόρμα όπως είδαμε υπάρχουν δύο κουμπιά, τα κουμπιά αυτά πρέπει να τα συνδέσουμε με κάποιο κώδικα ώστε όταν τα πατούμε να επιτελούν κάποιες λειτουργίες.

7 Συνδέσεις

8 Στη συνέχεια; ● Αφού λοιπόν ολοκληρώσαμε όλες μας τις συνδέσεις δε μας μένει παρά να γράψουμε τον κώδικα που θέλουμε να πραγματοποιούν τα κουμπιά αφού πατηθούν. ● Για το cancel_pushButton δε θα αναφέρω κάτι αφού το μόνο που κάνουμε είναι να κλείνουμε την εφαρμογή μας με τη βοήθεια της προϋπάρχουσας συνάρτησης close() την οποία και καλούμε. ● Στη συνέχεια παρατίθεται ο πηγαίος κώδικας του έτερου κουμπιού που καλεί τη συνάρτηση main_program_Slot()

9 Πηγαίος κώδικας void login_form::main_program_Slot() { QSqlDatabase *db=QSqlDatabase::addDatabase("QMYSQL3"); if(!db) { QMessageBox::critical(0,"ERROR", "Could not find driver",QMessageBox::Ok, QmessageBox::NoButton, QmessageBox::NoButton); exit (EXIT_FAILURE); } db->setDatabaseName("baseis_III"); db->setHostName("localhost"); db->setUserName(username_lineEdit->text()); db->setPassword(password_lineEdit->text());

10 Πηγαίος κώδικας... if(!db->open()) { QMessageBox::critical(0,"ERROR", "Wrong Username or Password", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); username_lineEdit->clear(); password_lineEdit->clear(); return; } this->hide(); main_program_form w; w.show(); w.exec(); db->close(); }

11 Επόμενη φόρμα ● Όπως παρατηρήσαμε στον πηγαίο κώδικα που προηγήθηκε όταν δούμε πως όλα πήγαν καλά με την εισαγωγή του χρήστη στο σύστημα διαχείρισης της βάσης δεδομένων καλούμε να εμφανιστεί ένα νέο παράθυρο τύπου main_program_form. ● Στη συνέχεια θα δούμε τη μορφή του παραθύρου αυτού και τις συνδέσεις του.

12 Σχεδίαση φόρμας

13 Συνδέσεις ● Όπως παρατηρήσαμε το παραπάνω παράθυρο αποτελείτε μόνο από κουμπιά, το μόνο που μας μένει σαν πριν είναι να συνδέσουμε τα κουμπιά αυτά με τις λειτουργίες τις οποίες θα πρέπει να εκτελούν.

14 Συνδέσεις

15 Πηγαίος κώδικας void main_program_form::epiplo_Slot() { this->setDisabled(true); epiplo_form w; w.show(); w.exec(); this->setEnabled(true); } void main_program_form::katigoria_Slot() { this->setDisabled(true); katigoria_form w; w.show(); w.exec(); this->setEnabled(true); }

16 Πηγαίος κώδικας ● Στην προηγούμενη διαφάνεια εμφανίστηκαν ενδεικτικά μόνο δύο συναρτήσεις από τον πηγαίο κώδικα του αρχείου το κυρίως προγράμματος... όμως όλες οι συναρτήσεις είναι ακριβώς στο ίδιο μοτίβο. ● Κάνουν ανενεργό το παρόν παράθυρο (του κυρίως προγράμματος), εμφανίζουν ένα άλλο παράθυρο που σχετίζεται κάπως με τη βάση και όταν τελειώσουν τη λειτουργία τους με το άλλο, ξανακάνουν ενεργό το παράθυρο του κυρίως προγράμματος.

17 Φόρμα βάσης δεδομένων ● Στη συνέχεια θα σχεδιάσουμε ένα παράθυρο που να σχετίζεται με κάποιο πίνακα της βάσης δεδομένων μας. ● Στον πίνακα της βάσης μας όμως υπάρχουν και κάποια ξένα κλειδιά για τα οποία θα πρέπει να κάνουμε κάποιους ελέγχους ώστε να μη βάζουμε στη βάση μας σκουπίδια. ● Ας ρίξουμε όμως μια ματιά στη φόρμα που σχετίζεται με τον πίνακα της βάσης μας...

18 Φόρμα βάσης δεδομένων

19 ● Ήδη έχουμε στη φόρμα μας τα απαραίτητα κουμπιά για να κάνουμε ερωτήσεις στη βάση μας, το μόνο που μας μένει είναι να κάνουμε ελέγχους για το ξένο κλειδί του πίνακά μας. ● Στη συνέχεια παρατίθεται ο κώδικας που αρχικοποιεί το παράθυρό μας ώστε να αποφύγουμε τον κίνδυνο των σκουπιδιών στη βάση μας στο πεδίο που βρίσκεται το ξένο κλειδί.

20 Αρχικοποίηση φόρμας void epiplo_form::init() { QSqlQuery query("SELECT katigoria FROM KatigoriaEpiploy ORDER BY katigoria;"); while(query.next()) katigoria_comboBox->insertItem(query.value(0).toString()); }

21 Συνδέσεις

22 ● Για τα κουμπιά δεν χρειάζεται να γράψουμε κώδικα μιας και το Qt φροντίζει να φτιάξει από μόνο του τον απαραίτητο κώδικα για τις “ερωτήσεις” στη βάση μας, εμείς το μόνο που έχουμε να κάνουμε είναι να προσέχουμε το ξένο μας κλειδί και γι αυτό...

23 Πριν εισάγουμε εγγραφή void epiplo_form::beforeUpdate( QSqlRecord * buffer ) { buffer->setValue("katigoria",katigoria_comboBox->currentText()); }

24 Πριν αλλάξουμε εγγραφή void epiplo_form::primeUpdate( QSqlRecord * buffer ) { QSqlQuery query("SELECT katigoria FROM KatigoriaEpiploy WHERE katigoria='"+ buffer->value("katigoria").toString()+"';" ); QString katigoria=""; if( query.next() ) { katigoria=query.value(0).toString(); for(int i=0; i count(); i++ ) { if (katigoria_comboBox->text(i)==katigoria ) { katigoria_comboBox->setCurrentItem(i); break; }


Κατέβασμα ppt "Databases & Qt Μανούσης Πέτρος ΑΜ: 862"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google