1 / 14

Embedded SQL

Embedded SQL. Κεφ. 4.12. Γιατί χρειάζεται. Κάποιες ερωτήσεις χρειάζονται την πλήρη ισχύ μίας προγραμματιστικής γλώσσας. Κάποιες φορές θέλουμε να κάνουμε και μη δηλωτικές εργασίες. Υποστηρίζεται σε πολλές γλώσσες όπως C, Cobol, Pascal, Java, PL/I, και Fortran (και όχι μόνο). Πώς γίνεται.

melissal
Download Presentation

Embedded SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Embedded SQL Κεφ. 4.12

  2. Γιατί χρειάζεται • Κάποιες ερωτήσεις χρειάζονται την πλήρη ισχύ μίας προγραμματιστικής γλώσσας. • Κάποιες φορές θέλουμε να κάνουμε και μη δηλωτικές εργασίες. • Υποστηρίζεται σε πολλές γλώσσες όπως C, Cobol, Pascal, Java, PL/I, και Fortran (και όχι μόνο).

  3. Πώς γίνεται • Ένα embedded SQL πρόγραμμα πρέπει να περάσει από ειδικό preprocessor πριν μεταγλωττιστεί • Ο preprocessor αντικαθιστά τις εντολές της embedded SQL με κώδικα στη host γλώσσα • Το πρόγραμμα που παράγεται μεταγλωττίζεται με τον μεταγλωττιστή της host γλώσσας

  4. Σύνταξη • Συνήθως : • EXEC SQL <embedded SQL statement > END-EXEC • Η ακριβής σύνταξη εξαρτάται από τη γλώσσα • C: • EXEC SQL …. ; • Java • #SQL { …. };

  5. Παράδειγμα EXEC SQL declare c cursor for select customer-name, customer-city from depositor, customer, account where depositor.customer-name = customer.customer-name and account.account-number = depositor.account-number and account.balance > :amount END-EXEC

  6. Παράδειγμα (συνέχεια) EXEC SQL open c END-EXEC EXEC SQL fetch c into :cn, :cc END-EXEC EXEC SQL close c END-EXEC (τα cn, cc έχουν οριστεί στο SQL INCLUDE τμήμα – το : χρησιμοποιείται για να ξεχωρίσουν από τις μεταβλητές της SQL) EXEC SQL < any valid update, insert, or delete> END-EXEC

  7. Cursor • Ορίζεται με την declare cursor για κάθε select ερώτηση που χρειαζόμαστε. • Ανοίγει με την open. • Κάθε fetch επιστρέφει στις μεταβλητές της host γλώσσας τα στοιχεία μίας πλειάδας. • Άρα χρειάζομαι έναν βρόχο • Κλείνει με την close.

  8. Cursor for update declare c cursor for select * from account where branch-name = ‘Perryridge‘ for update update account set balance = balance + 100 where current of c Αφού κάνω fetch

  9. Dynamic SQL • Οι ερωτήσεις SQL δημιουργούνται κατά τον χρόνο εκτέλεσης του προγράμματος. • Οι ερωτήσεις δημιουργούνται ως string κατά τον χρόνο εκτέλεσης – ίσως χρησιμοποιώντας και είσοδο από τον χρήστη. • prepare & execute

  10. Παράδειγμα char * sqlprog = ”update account set balance = balance ∗1.05 where account-number = ?” EXEC SQL preparedynprogfrom :sqlprog; char account[10] = ”A-101”; EXEC SQL executedynprogusing :account;

  11. ODBC Open DataBase Connectivity • Connection to server • ODBC defines HENV (environment), HDBC (database connection), RETCODE (return code) • SQLAllocEnv • SQLAllocConnect • SQLConnect (several parameters) • Send commands • SQLAllocStmt • SQLExecDirect • SQLBindCol • SQLFetch • SQLFreeStmt • Disconnect • SQLDisconnect • SQLFreeConnect • SQLFreeEnv

  12. JDBC Java DataBase Connectivity • Class.forName loads appropriate drivers • DriverManager.getConnection(…);  Connection • Class Connection • createStatement();  Statement • close(); • Class Statement • executeUpdate(); • executeQuery();  ResultSet • close(); • Class ResultSet • next(); • SQLException

  13. JDBCPrepared PreparedStatementpStmt = conn.prepareStatement( ”insert into account values(?,?,?)”); pStmt.setString(1, ”A-9732”); pStmt.setString(2, ”Perryridge”); pStmt.setInt(3, 1200); pStmt.executeUpdate(); pStmt.setString(1, ”A-9733”); pStmt.executeUpdate();

  14. MySQL • Γενικά για συνδέσεις με γλώσσες προγραμματισμού • https://dev.mysql.com/doc/refman/5.5/en/connectors-apis.html • Ειδικά • C https://dev.mysql.com/doc/connector-c/en/ • Java https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-basic.html • Python https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html

More Related