Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
el:developers:database [2022/10/26 15:53] – created admin | el:developers:database [2022/10/26 16:09] – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ---- Σύνδεση με τη βάση δεδομένων μέσω του αντικειμένου Database | + | ===== Σύνδεση με τη βάση δεδομένων μέσω του αντικειμένου Database |
- | Η σύνδεση με τη βάση δεδομένων από την έκδοση του Open eClass 3 και μετά γίνεται με τη χρήση του αντικειμένου Database που ορίζεται στο | ||
- | Η πρόσβαση στο αντικείμενο αυτό γίνεται κυρίως με τη static μέθοδο | + | Η σύνδεση με τη βάση δεδομένων από την έκδοση του Open eClass 3 και μετά γίνεται με τη χρήση του αντικειμένου Database που ορίζεται στο // |
- | <pre>< | + | |
+ | Η πρόσβαση στο αντικείμενο αυτό γίνεται κυρίως με τη static μέθοδο | ||
+ | < | ||
Database:: | Database:: | ||
- | </code></ | + | </ |
- | Αν υπάρχει ανάγκη σύνδεσης σε κάποια άλλη βάση, | + | Αν υπάρχει ανάγκη σύνδεσης σε κάποια άλλη βάση, |
- | <pre>< | + | < |
Database:: | Database:: | ||
- | </code></ | + | </ |
Αν θέλουμε να συνδεθούμε στο DBMS, αλλά χωρίς να συνδεθούμε σε συγκεκριμένη βάση (π.χ. αν θέλουμε να κατασκευάσουμε μία βάση ή γενικά να εκτελέσουμε διαχειριστικά σχετικά με το DBMS), τότε η σύνδεση γίνεται ως εξής: | Αν θέλουμε να συνδεθούμε στο DBMS, αλλά χωρίς να συνδεθούμε σε συγκεκριμένη βάση (π.χ. αν θέλουμε να κατασκευάσουμε μία βάση ή γενικά να εκτελέσουμε διαχειριστικά σχετικά με το DBMS), τότε η σύνδεση γίνεται ως εξής: | ||
- | <pre>< | + | < |
Database:: | Database:: | ||
- | </code></ | + | </ |
Οι μέθοδοι που υποστηρίζονται είναι οι εξής: | Οι μέθοδοι που υποστηρίζονται είναι οι εξής: | ||
- | <pre>< | + | < |
// Transactional Methods | // Transactional Methods | ||
Database:: | Database:: | ||
Line 25: | Line 26: | ||
Database:: | Database:: | ||
Database:: | Database:: | ||
- | </code></ | + | </ |
- | _Σημείωση: | + | __Σημείωση__: για το '' |
Σε κάθε μία μέθοδο, | Σε κάθε μία μέθοδο, | ||
- | Στον επόμενο πίνακα φαίνονται οι αντιστοιχίες τύπων και χαρακτήρων. Η αντιστοιχία είναι όμοια με αυτή της | + | Στον επόμενο πίνακα φαίνονται οι αντιστοιχίες τύπων και χαρακτήρων. Η αντιστοιχία είναι όμοια με αυτή της |
- | |_. Χαρακτήρας |_. Τύπος παραμέτρου | | + | | //Χαρακτήρας// | //Τύπος παραμέτρου// | |
- | | @?d@ | ακέραιος αριθμός | | + | | ?d | ακέραιος αριθμός | |
- | | @?b@ | δυαδικός (true/ | + | | ?b | δυαδικός (true/ |
- | | @?f@ | δεκαδικός αριθμός | + | | ?f | δεκαδικός αριθμός |
- | | @?s@ | συμβολοσειρά | + | | ?s | συμβολοσειρά |
- | | @?t@ | ώρα/ | + | | ?t | ώρα/ |
Για παράδειγμα, | Για παράδειγμα, | ||
- | <pre>< | + | < |
DELETE FROM course_review WHERE course_id = 1; | DELETE FROM course_review WHERE course_id = 1; | ||
- | </ | + | </ |
- | <pre>< | + | o σωστός τρόπος να συντάξουμε τις παραμέτρους είναι ο εξής: |
+ | < | ||
Database:: | Database:: | ||
- | </code></ | + | </ |
- | *Δεν* είναι απαραίτητο να εσωκλείεται η παράμετρος σε μία βοηθητική συνάρτηση που να ορίζει ρητά τον τύπο της, σαν τις | + | **Δεν** είναι απαραίτητο να εσωκλείεται η παράμετρος σε μία βοηθητική συνάρτηση που να ορίζει ρητά τον τύπο της, σαν τις |
- | Πριν τη λίστα με τις παραμέτρους που θα εισαγχθούν στο επερώτημα, | + | Πριν τη λίστα με τις παραμέτρους που θα εισαγχθούν στο επερώτημα, |
- | h2. Μέθοδος @query($statement); | ||
- | Με τη μέθοδο αυτή εκτελούμε ένα απλό επερώτημα. Η επιστρεφόμενη τιμή αυτής της συνάρτησης είναι ένα αντικείμενο τύπου | + | ---- |
- | <pre>< | + | |
+ | === Μέθοδος query($statement) === | ||
+ | |||
+ | Με τη μέθοδο αυτή εκτελούμε ένα απλό επερώτημα. Η επιστρεφόμενη τιμή αυτής της συνάρτησης είναι ένα αντικείμενο τύπου | ||
+ | < | ||
$cid = 1; | $cid = 1; | ||
$affectedRows = Database:: | $affectedRows = Database:: | ||
- | </code></ | + | </ |
- | Το αντικείμενο | + | Το αντικείμενο |
Σε περίπτωση που μας ενδιεφέρει να ενημερωθούμε αν κάτι δεν έχει πάει καλά, αυτό γίνεται με τη συνάρτηση επανάκλησης, | Σε περίπτωση που μας ενδιεφέρει να ενημερωθούμε αν κάτι δεν έχει πάει καλά, αυτό γίνεται με τη συνάρτηση επανάκλησης, | ||
- | <pre>< | + | < |
$cid = 1; | $cid = 1; | ||
Database:: | Database:: | ||
echo "An error has occured: " . $errormsg; | echo "An error has occured: " . $errormsg; | ||
}, $cid); | }, $cid); | ||
- | </code></ | + | </ |
- | h2. Μέθοδος @querySingle($statement); | + | ---- |
- | Με τη μέθοδο | + | === Μέθοδος |
- | Ως αποτέλεσμα λαμβάνουμε ένα αντικείμενο όπου κάθε ιδότητά του (property) έχει τιμή ίδια με το όνομα της στήλης σε περιβάλλον SQL. Για το λόγο αυτό είναι προτιμότερο κάθε στήλη να έχει ένα μοναδικό όνομα, ώστε να είναι μετά άμεση η προσπέλαση σε αυτό. Αν δεν υπάρχουν αποτελέσματα επιστρέφεται το @null@, οπότε είναι θεμιτό να γίνεται έλεγχος για | + | Με τη μέθοδο αυτή εκτελούμε ένα επερώτημα από το οποίο περιμένουμε να λάβουμε ως αποτέλεσμα ένα μοναδικό στοιχείο, |
- | <pre>< | + | |
+ | Ως αποτέλεσμα λαμβάνουμε ένα αντικείμενο όπου κάθε ιδότητά του (property) έχει τιμή ίδια με το όνομα της στήλης σε περιβάλλον SQL. Για το λόγο αυτό είναι προτιμότερο κάθε στήλη να έχει ένα μοναδικό όνομα, ώστε να είναι μετά άμεση η προσπέλαση σε αυτό. Αν δεν υπάρχουν αποτελέσματα επιστρέφεται το '' | ||
+ | < | ||
$stat_object = Database:: | $stat_object = Database:: | ||
if ($stat_object) { | if ($stat_object) { | ||
$status = $stat_object-> | $status = $stat_object-> | ||
} | } | ||
- | </ | + | </ |
- | Ένα άλλο παράδειγμα: | + | |
+ | Ένα άλλο παράδειγμα: | ||
+ | < | ||
$openCoursesNum = Database:: | $openCoursesNum = Database:: | ||
- | </code></ | + | </ |
- | h2. Μέθοδος @queryArray($statement); | + | ---- |
- | Αυτή η μέθοδος | + | === Μέθοδος |
- | Η σύνταξη της μεθόδου είναι αντίστοιχη ομοίως της | + | Αυτή η μέθοδος εκτελείται όταν περιμένουμε από το επερώτημα να επιστρέψει περισσότερο από ένα στοιχείο (ή γραμμή) και θέλουμε να πάρουμε αμέσως όλα τα αντικείμενα |
- | Η επιστρεφόμενη τιμή είναι ένας πίνακας με αντικείμενα, | + | Η σύνταξη της μεθόδου είναι αντίστοιχη ομοίως της '' |
+ | |||
+ | Η επιστρεφόμενη τιμή είναι ένας πίνακας με αντικείμενα, | ||
Παράδειγμα χρήσης της μεθόδου | Παράδειγμα χρήσης της μεθόδου | ||
- | <pre>< | + | < |
$moduleIDs = Database:: | $moduleIDs = Database:: | ||
foreach ($moduleIDs as $module) { | foreach ($moduleIDs as $module) { | ||
$publicModules[] = $module-> | $publicModules[] = $module-> | ||
} | } | ||
- | </code></ | + | </ |
- | h2. Μέθοδος @queryFunc($statement, | ||
- | Η μέθοδος αυτή αναφέρεται σε επερωτήματα που μπορεί να έχουν πολλά αποτελέσματα, | + | ---- |
+ | |||
+ | === Μέθοδος queryFunc($statement, | ||
+ | |||
+ | Η μέθοδος αυτή αναφέρεται σε επερωτήματα που μπορεί να έχουν πολλά αποτελέσματα, | ||
Ως δεύτερη παράμετρο δίνουμε μία function με μία και μοναδική παράμετρο, | Ως δεύτερη παράμετρο δίνουμε μία function με μία και μοναδική παράμετρο, | ||
- | Επειδή η ορατότητα των εξωτερικών μεταβλητών μέσα στη συνάρτηση είναι περιορισμένη, | + | Επειδή η ορατότητα των εξωτερικών μεταβλητών μέσα στη συνάρτηση είναι περιορισμένη, |
Ένα απλό παράδειγμα της μεθόδου αυτής είναι το εξής: | Ένα απλό παράδειγμα της μεθόδου αυτής είναι το εξής: | ||
- | <pre>< | + | < |
- | DataBase:: | + | DataBase:: |
echo " | echo " | ||
- | }, intval($courseId));</ | + | }, intval($courseId)); |
+ | </ | ||
Ένα πλήρες παράδειγμα και με συνάρτησης επανάκλησης σε περίπτωση λάθους: | Ένα πλήρες παράδειγμα και με συνάρτησης επανάκλησης σε περίπτωση λάθους: | ||
- | <pre>< | + | < |
$counter = 0; | $counter = 0; | ||
Database:: | Database:: | ||
Line 126: | Line 141: | ||
exit(); | exit(); | ||
} , $dbname); | } , $dbname); | ||
- | </code></ | + | </ |
- | h2. Διαχείριση transactions | + | ---- |
+ | |||
+ | === Διαχείριση transactions | ||
Όλες οι κλήσεις προς τη βάση είναι transactional. Σε περίπτωση που εκτελέσουμε ένα query και, ενώ ακόμα είναι ενεργό, | Όλες οι κλήσεις προς τη βάση είναι transactional. Σε περίπτωση που εκτελέσουμε ένα query και, ενώ ακόμα είναι ενεργό, | ||
Line 135: | Line 152: | ||
Σαν παράδειγμα, | Σαν παράδειγμα, | ||
- | <pre>< | + | < |
Database:: | Database:: | ||
Database:: | Database:: | ||
Database:: | Database:: | ||
}); | }); | ||
- | </code></ | + | </ |
Μόνο όταν τελειώσει η εκτέλεση της συνάρτησης, | Μόνο όταν τελειώσει η εκτέλεση της συνάρτησης, | ||
- | h2. Ανάγνωση χαρακτηριστικών της βάσης | + | ---- |
+ | |||
+ | === Ανάγνωση χαρακτηριστικών της βάσης | ||
Υποστηρίζεται η ανάγνωση χαρακτηριστικών της βάσης (attributes) μέσω της μεθόδου | Υποστηρίζεται η ανάγνωση χαρακτηριστικών της βάσης (attributes) μέσω της μεθόδου | ||
- | <pre>< | + | < |
Database:: | Database:: | ||
- | </code></ | + | </ |
Τα πιθανά attribute names είναι τα εξής: | Τα πιθανά attribute names είναι τα εξής: | ||
- | |_. attribute names | | + | | //attribute names// | |
- | | @autocommit()@ | | + | | '' |
- | | @textCase()@ | | + | | '' |
- | | @clientVersion()@ | | + | | '' |
- | | @connectionStatus()@ | | + | | '' |
- | | @driverName()@ | | + | | '' |
- | | @errorMode()@ | | + | | '' |
- | | @oracleNulls()@ | | + | | '' |
- | | @persistent()@ | | + | | '' |
- | | @prefech()@ | + | | '' |
- | | @serverInfo()@ | + | | '' |
- | | @serverVersion()@ | | + | | '' |
| @timeout()@ | | @timeout()@ | ||