Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Σχετικά έγγραφα
Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

Αρχιτεκτονική Υπολογιστών

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Εκπαιδευτικό Υλικό για την. «Βάση σχολικών μονάδων ΠΣΔ»

Μαλούτα Θεανώ Σελίδα 1

Προγραμματισμός ΙI (Θ)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα

Διαχείριση Πολιτισμικών Δεδομένων

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Εγκατάσταση του Lazarus

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Αρχιτεκτονική Υπολογιστών

Λιβανός Γιώργος Εξάμηνο 2017Β

ANDROID Προγραμματισμός Εφαρμογών

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

2 η Εργαστηριακή Άσκηση

Epsilon Net PYLON Platform

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Συντάχθηκε απο τον/την Administrator Δευτέρα, 22 Φεβρουάριος :11 - Τελευταία Ενημέρωση Παρασκευή, 26 Φεβρουάριος :52

Εισαγωγή στις Βάσεις Δεδομζνων II

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 1: Ορισμοί βασικών εννοιών: Μια πρώτη μοντελοποίηση. Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Αικατερίνη Καμπάση, PhD. Τμήμα Προστασίας και Συντήρησης Πολιτισμικής Κληρονομιάς Α.Τ.Ε.Ι. Ιονίων Νήσων

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Προτεινόμενα Θέματα ΑΕΠΠ

ΠΑΡΟΥΣΙΑΣΗ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Εισαγωγή στην Πληροφορική

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2-1

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Α. Ερωτήσεις Ανάπτυξης

Περιπτώσεις Χρήσης για το Π.Σ. ΜΟ.ΔΙ.Π. Κρήτης

Σχεδιασμός Βάσεων Δεδομένων

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

SingularLogic Σεπτέμβριος 2014

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

Interactive Power Point

Προγραμματισμός Υπολογιστών με C++

6.2 Υπηρεσίες Διαδικτύου

Παραδείγματα μεταβλητών

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματιστικό Περιβάλλον

Οδηγός σύνδεσης. Υποστηριζόμενα λειτουργικά συστήματα. Σελίδα 1 από 5

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία


Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Περιγραφή της εργασίας

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων

Γενικά (για τις γραπτές εξετάσεις)

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

Ο Δ Η Γ Ο Σ Ε Ν Ε Ρ Γ Ο Π Ο Ι Η Σ Η Σ Κ Α Ι Α Σ Φ Α Λ Ε Ι Α Σ Τ Ο Υ Π Ρ Ο Γ Ρ Α Μ Μ Α Τ Ο Σ Σ Τ Α Τ Ι Κ Ω Ν Μ Ε Λ Ε Τ Ω Ν Ρ Α Φ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

ΑΛΛΑΓΕΣ ΠΟΥ ΕΓΙΝΑΝ ΣΤΗΝ ΕΚΔΟΣΗ 3.3

Θεματογράφος (ή ο βοηθός του Καθηγητή)

Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές).

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Ειδικά Θέματα Προγραμματισμού

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Vodafone Business Connect

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Προγραμματισμός Διαχείρισης Συστημάτων Ι

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Ασφάλεια Υπολογιστών Και Δικτύων. Προσομοίωση επίθεσης σε ευπαθές σε SQL Injection σύστημα και απόκτηση κονσόλας διαχειριστή

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Οδηγός βάσεων δεδομένων

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

ARTius με PostgreSQL

Εγκατεστημένα Προγράμματα στο pleiades/zafora.icte.uowm.gr

ΠΡΟΣΟΜΟΙΩΣΗ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γʹ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΤΡΙΤΗ 18 ΑΠΡΙΛΙΟΥ 2017 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ (7)

Transcript:

1

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει στη βιβλιοθήκη του ΑΤΕΙΘ. 2

Το πρόγραμμα είναι εφαρμογή Java και έτσι έχει όλα τα προτερήματα ενός προγράμματος java. 3

To ODBC χρησιμοποιείται σπάνια πια. Το JDBC είναι προϊόν της Oracle SUN και έχει επικρατήσει στην αγορά. 4

Η αρχιτεκτονική ενός συστήματος το οποίο βασίζεται σε JDBC τεχνολογία αποτελείται από τέσσερα μέρη. Από τη μία πλευρά έχουμε την Java εφαρμογή και από την άλλη πλευρά τις πηγές δεδομένων, δηλαδή τους διακομιστές των Βάσεων Δεδομένων. Για να γίνει η σύνδεση και αλληλεπίδρασή τους χρησιμοποιείται ο διαχειριστής οδηγών ο οποίος «διαχειρίζεται» δ ί τους οδηγούς των Συστημάτων Βάσεων Δεδομένων που θα συνδεθεί η εφαρμογή. 5

Όταν χρησιμοποιούμε την τεχνολογία JDBC τότε η δική μας η δουλειά περιορίζεται στη συγγραφή του προγράμματος JAVA. Εκεί γράφουμε τον κώδικα που υλοποιεί την εφαρμογή μας ενώ όσο αφορά την αλληλεπίδρασή μας με τη βάση δεδομένων εκτελούμε τις παρακάτω ενέργειες: (α) ενεργοποιούμε την σύνδεση, (β) στέλνουμε SQL εντολές στο διακομιστή της Βάσης Δεδομένων, (γ) δεχόμαστε και διαχειριζόμαστε τα δεδομένα που μας στέλνει η Βάση τα οποία μπορεί να είναι είτε ένα μήνυμα ότι όλα πήγαν καλά, είτε αποτελέσματα ενός SELECT αιτήματος είτε κάποιο μήνυμα λάθους σχετικό με την εντολή SQL που ζητήσαμε να εκτελεστεί, και τέλος (δ) απενεργοποιούμε την σύνδεση 6

Ο διαχειριστής των οδηγών είναι ουσιαστικά μία τάξη η οποία περιέχει όλες τις μεθόδους για να διαχειριστούμε τους οδηγούς και να κάνουμε όλη την προετοιμασία για την σύνδεση με τη Βάση, να υλοποιήσουμε την αλληλεπίδραση μεταξύ εφαρμογής και Βάσης και τέλος μας δίνει τη δυνατότητα να κρατήσουμε και ιστορικό αρχείο. 7

Ο οδηγός είναι μία εφαρμογή η οποία μπορεί να έχει γραφτεί σε διάφορες γλώσσες προγραμματισμού, ακόμα και Java. Κάθε εταιρεία που εμπορεύεται ένα Σύστημα Διαχείρισης Βάσεων Δεδομένων φροντίζει στα πλαίσια του ανταγωνισμού να εφοδιάσει τους προγραμματιστές με τους κατάλληλους οδηγούς για σύνδεση με τη Βάση. Στην ιστοσελίδα http://java.sun.com/products/jdbc / /db και αφού επιλέξουμε Industry Support βρίσκουμε συνδέσεις με τις ιστοσελίδες των σημαντικότερων εταιρειών Βάσεων Δεδομένων από όπου μπορούμε να κατεβάσουμε τους οδηγούς. 8

9

Υπάρχουν τέσσερα είδη οδηγών τους οποίους θα τους μελετήσουμε αναλυτικά παρακάτω. 10

Ο τύπος 1 είναι ο παλιότερος τύπος που παρουσιάστηκε. Η εταιρεία που τον κατασκεύασε είναι η Microsoft. Ο οδηγός αυτός είναι αργός και παρέχεται με την εγκατάσταση της Java. 11

Ορίζεται από το «Πίνακα Ελέγχου» και τα «Εργαλεία Διαχείρισης». Από εκεί επιλέγουμε «Πηγές Δεδομένων». 12

Επιλέγουμε «DSN συστήματος» και «προσθήκη» 13

Επιλέγουμε τον κατάλληλο οδηγό. 14

Δίνουμε ένα όνομα στον οδηγό και τον αντιστοιχίζουμε με το τοπικό όνομα μιας Βάσης Δεδομένων. Αυτή μπορεί να είναι μία τοπική Βάση ή το τοπικό ψευδώνυμο μίας Βάσης η οποία βρίσκεται σε ένα απομακρυσμένο διακομιστή Βάσεων Δεδομένων. 15

Ο οδηγός έγινε διαθέσιμος για χρήση. 16

Ο δεύτερος τύπος είναι γραμμένος στη γλώσσα που έχει επιλέξει η εταιρεία του ΣΔΒΔ. Προφανώς μπορεί να είναι οποιαδήποτε (συνήθως C) και το πιθανότερο είναι ότι δεν είναι η Java. 17

Στον τρίτο τύπο πρέπει να επικοινωνήσει η εφαρμογή μας με ένα ενδιάμεσο λογισμικό (π.χ. στην τριών επιπέδων αρχιτεκτονική, ο application server) το οποίο με τη σειρά του επικοινωνεί με τη Βάση Δεδομένων με οποιοδήποτε τύπο οδηγού. 18

Είναι ο πιο γρήγορος οδηγός. Είναι γραμμένος σε Java και επικοινωνεί χωρίς κανένα ενδιάμεσο με το ΣΔΒΔ που μας ενδιαφέρει. 19

Οι τέσσερις τύποι οδηγού γραφικά. 20

Το πρώτο που πρέπει να γίνει είναι η σύνδεση με τη Βάση Δεδομένων. Αυτό επιτυγχάνεται με χρήση της Τάξης DriverManager. Η σύνδεση γίνεται σε δύο στάδια. Πρώτα φορτώνουμε τον οδηγό και μετά υλοποιούμε την σύνδεση. 21

Το πρώτα που πρέπει να γίνει είναι η σύνδεση με τη Βάση Δεδομένων. Αυτό επιτυγχάνεται με χρήση της Τάξης DriverManager. Η σύνδεση γίνεται σε δύο στάδια. Πρώτα φορτώνουμε τον οδηγό και μετά υλοποιούμε την σύνδεση. 22

Η φόρτωση του οδηγού γίνεται με την μέθοδο forname της τάξης Class. Για παράμετρο παίρνει το όνομα του οδηγού (driverclassname). Στην περίπτωση των ODBC οδηγών η παράμετρος είναι πάντα driverclassname = "sun.jdbc.odbc.jdbcodbcdriver"; Στην περίπτωση των JDBC οδηγών η παράμετρος εξαρτάται από το ΣΔΒΔ Για παράδειγμα: Η παράμετρος για την Postgres είναι driverclassname = "org.postgresql.driver Η παράμετρος για την IBM DB2 είναι driverclassname = "com.ibm.db2.jcc.db2driver" 23

Η υλοποίηση της σύνδεσης γίνεται με τη μέθοδο DriverManager.getConnection αποθηκεύεται σε ένα αντικείμενο της τάξης Connection. Παίρνει τρεις παραμέτρους. (α) το url. 1. για ODBC οδηγούς το url είναι πάντα «jdbc:odbc:όνομα_οδηγού» ό δ ύ To όνομα οδηγού είναι αυτό που ορίσαμε στις διαφάνειες 12 16. 2. για JDBC οδηγούς πρέπει να συμβουλευτούμε τις οδηγίες που συνοδεύουν τον οδηγό. Στα εργαστηριακά μας μαθήματα θα χρησιμοποιήσουμε παραδείγματα όπως φαίνονται στη διαφάνεια. 24

Για να στείλουμε οποιαδήποτε εντολή SQL θα πρέπει να χρησιμοποιήσουμε ένα αντικείμενο της τάξης Statement. Αυτό δημιουργείται με την εντολή: Statement stmt = con.createstatement(); Η μεταφορά των εντολών SQL στη Βάση για εκτέλεση χωρίζεται σε δύο κατηγορίες. Στην εντολή SELECT και σε όλες τις άλλες. Η εντολή SELECT εκτελείται με τη μέθοδο executequery ενώ όλες οι άλλες με την μέθοδο executeupdate. 25

26

Εδώ παρουσιάζονται οι μέθοδοι που χρησιμοποιούνται για κατέβασμα τιμών από τη Βάση σε αντίστοιχες μεταβλητές στην java. 27

28

29

30

1. Φορτώνεται η βιβλιοθήκη java.sql.* η οποία περιέχει όλες τις τάξεις που χρειάζονται για την υλοποίηση της διεπαφής JDBC. 2. Δηλώνεται η κύρια κλάση του προγράμματος. 3. Δηλώνεται μία αλφαριθμητική μεταβλητή η οποία περιέχει το όνομα του οδηγού. Στο παράδειγμα μας είναι JDBC. 4. Δηλώνεται το url μίας βάσης όπως την υλοποιήσαμε με το εργαλείο των windows που περιγράφεται στις διαφάνειες 6 12. Μπορεί να είναι οποιαδήποτε ΣΔΒΔ. 5. Δηλώνεται ένα αντικείμενο Connection το θα διαχειρίζεται τα στοιχεία της σύνδεσης. 6. Δηλώνεται ένα αντικείμενο Statement το οποίο θα χρησιμοποιηθεί για την αλληλεπίδραση με τη βάση. 7. Δηλώνεται η κύρια μέθοδος του προγράμματος. 8. Φορτώνεται ο οδηγός. 9. Γίνεται η σύνδεση. 10. Συνδέεται το αντικείμενο Statement με τη βάση. 11. Δημιουργείται ο πίνακας Sailors με χρήση της μεθόδου executeupdate 31

16. Δημιουργείται ο πίνακας Boats με χρήση της μεθόδου executeupdate 20. Δημιουργείται ο πίνακας Reserves με χρήση της μεθόδου executeupdate 27. To αντικείμενο statement καταστρέφεται. 28. Η σύνδεση κλείνει. 32

33

34

35

36

37

38

39

4. Δηλώνεται το url της τοπικής Βάσης της DB2 με το ψευδώνυμο LIBRARY. 40

41

42

4. Σύνδεση με τη Βάση db2lab1 της postgres στον αετό. 43

44

45

46

47

48

49

50