Uygulama Geli¸tirme                      s                        SQL                  Kaynaklar         Veri Tabanı Siste...
Uygulama Geli¸tirme                                                 s                                                   SQ...
Uygulama Geli¸tirme                                      s                                        SQL                     ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                 s                      Uygulama Geli¸tirme                          ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                 s                      Uygulama Geli¸tirme                          ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                     s                          Uygulama Geli¸tirme                  ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                   s                        Uygulama Geli¸tirme                      ...
Giri¸                                                    s                         Uygulama Geli¸tirme                    ...
Giri¸                                                      s                           Uygulama Geli¸tirme                ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                 s                      Uygulama Geli¸tirme                          ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                  s                       Uygulama Geli¸tirme                        ...
Giri¸                                                s                     Uygulama Geli¸tirme                            ...
Kayıtlı Yordamlar                         Uygulama Geli¸tirme                                      s                      ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                       Uygulama Geli¸tirme                                    s                          ...
Kayıtlı Yordamlar                         Uygulama Geli¸tirme                                      s                      ...
Kayıtlı Yordamlar                          Uygulama Geli¸tirme                                       s                    ...
Kayıtlı Yordamlar                       Uygulama Geli¸tirme                                    s                          ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                         Uygulama Geli¸tirme                                      s                      ...
Kayıtlı Yordamlar                       Uygulama Geli¸tirme                                    s                          ...
Kayıtlı Yordamlar                       Uygulama Geli¸tirme                                    s                          ...
Kayıtlı Yordamlar                       Uygulama Geli¸tirme                                    s                          ...
Kayıtlı Yordamlar                    Uygulama Geli¸tirme                                 s                                ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                        Uygulama Geli¸tirme                                     s                        ...
Kayıtlı Yordamlar                     Uygulama Geli¸tirme                                  s                              ...
Kayıtlı Yordamlar                     Uygulama Geli¸tirme                                  s                              ...
Kayıtlı Yordamlar                         Uygulama Geli¸tirme                                      s                      ...
Kayıtlı Yordamlar                            Uygulama Geli¸tirme                                         s                ...
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Veri Tabanı Sistemleri - Uygulama Geliştirme
Upcoming SlideShare
Loading in …5
×

Veri Tabanı Sistemleri - Uygulama Geliştirme

1,575 views

Published on

Gömülü SQL, JDBC, tetikler, görüntüler, izinler.

Published in: Education, Technology
3 Comments
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,575
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
59
Comments
3
Likes
1
Embeds 0
No embeds

No notes for slide

Veri Tabanı Sistemleri - Uygulama Geliştirme

  1. 1. Uygulama Geli¸tirme s SQL Kaynaklar Veri Tabanı Sistemleri Uygulama Geli¸tirme s H. Turgut Uyar ¨ g¨ u u Sule O˘ud¨c¨ ¸ 2002-2012 ¸ ¨ g¨ u uH. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  2. 2. Uygulama Geli¸tirme s SQL KaynaklarLicense ¸ ¨ g¨ u u c 2002-2012 T. Uyar, S. O˘ud¨c¨ You are free: to Share – to copy, distribute and transmit the work to Remix – to adapt the work Under the following conditions: Attribution – You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Noncommercial – You may not use this work for commercial purposes. Share Alike – If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. Legal code (the full license): http://creativecommons.org/licenses/by-nc-sa/3.0/ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  3. 3. Uygulama Geli¸tirme s SQL KaynaklarKonular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  4. 4. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCKonular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  5. 5. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCGiri¸ s veri tabanı dili ile genel ama¸lı bir programlama dilinin c birlikte kullanımı uygulamanın yazıldı˘ı genel ama¸lı dil: taban dil g c SQL ile taban dil arasında uyumsuzluk: SQL i¸lemleri k¨meler uzerinde s u ¨ genel ama¸lı dillerde yineleme yapıları c ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  6. 6. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCGiri¸ s veri tabanı dili ile genel ama¸lı bir programlama dilinin c birlikte kullanımı uygulamanın yazıldı˘ı genel ama¸lı dil: taban dil g c SQL ile taban dil arasında uyumsuzluk: SQL i¸lemleri k¨meler uzerinde s u ¨ genel ama¸lı dillerde yineleme yapıları c ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  7. 7. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCProgram Yapısı ba˘lantı kur g sunucu, veri tabanı, kullanıcı adı, parola gerektik¸e komut ¸alı¸tır: c c s g¨ncelleme i¸lemleri i¸lemden etkilenen satır sayısını d¨nd¨r¨r u s s o uu sorgulama i¸lemleri sonu¸ k¨meleri d¨nd¨r¨r s c u o uu → d¨ng¨yle satır satır gez o u ba˘lantıyı kopar g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  8. 8. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCProgram Yapısı ba˘lantı kur g sunucu, veri tabanı, kullanıcı adı, parola gerektik¸e komut ¸alı¸tır: c c s g¨ncelleme i¸lemleri i¸lemden etkilenen satır sayısını d¨nd¨r¨r u s s o uu sorgulama i¸lemleri sonu¸ k¨meleri d¨nd¨r¨r s c u o uu → d¨ng¨yle satır satır gez o u ba˘lantıyı kopar g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  9. 9. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCProgram Yapısı ba˘lantı kur g sunucu, veri tabanı, kullanıcı adı, parola gerektik¸e komut ¸alı¸tır: c c s g¨ncelleme i¸lemleri i¸lemden etkilenen satır sayısını d¨nd¨r¨r u s s o uu sorgulama i¸lemleri sonu¸ k¨meleri d¨nd¨r¨r s c u o uu → d¨ng¨yle satır satır gez o u ba˘lantıyı kopar g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  10. 10. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCUygulama Geli¸tirme Y¨ntemleri s o uygulama programı aray¨z¨ (API) u u g¨m¨l¨ SQL o uu ODBC dil standart aray¨zleri u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  11. 11. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCUygulama Programı Aray¨z¨ u u SQL sunucusunun kitaplık fonksiyonlarını ¸a˘ırarak c g avantajı: hızlı dezavantajı: sunucudan sunucuya de˘i¸iyor gs ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  12. 12. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCUygulama Programı Aray¨z¨ u u SQL sunucusunun kitaplık fonksiyonlarını ¸a˘ırarak c g avantajı: hızlı dezavantajı: sunucudan sunucuya de˘i¸iyor gs ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  13. 13. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC u u ¨ gUygulama Programı Aray¨z¨ Orne˘i ¨ Ornek (PostgreSQL - C) # include < libpq - fe .h > int main ( int argc , char * argv []) { /* connect */ /* execute query */ /* disconnect */ } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  14. 14. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC u u ¨ gUygulama Programı Aray¨z¨ Orne˘i ¨ Ornek (veri tabanı ba˘lantısı) g /* PGconn * conn ; */ conn = PQconnectdb ( " host = localhost dbname = imdb " " user = itucs password = itucs " ); if ( PQstatus ( conn ) == CONNECTION_BAD ) { fprintf ( stderr , " Connection failed . n " ); exit (1); } /* execute query */ PQfinish ( conn ); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  15. 15. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC u u ¨ gUygulama Programı Aray¨z¨ Orne˘i ¨ Ornek (sorgunun i¸leni¸i) s s /* PGresult * result ; */ sprintf ( query , " SELECT TITLE , SCORE " " FROM MOVIE WHERE ( YR = % d ) " , year ); result = PQexec ( conn , query ); if ( PQresultStatus ( result ) != PGRES_TUPLES_OK ) { fprintf ( stderr , " Query failed . n " ); PQclear ( result ); PQfinish ( conn ); exit (1); } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  16. 16. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC u u ¨ gUygulama Programı Aray¨z¨ Orne˘i ¨ Ornek (sonu¸ k¨mesinin i¸leni¸i) c u s s for ( i = 0; i < PQntuples ( result ); i ++) { title = PQgetvalue ( result , i , 0); score = PQgetvalue ( result , i , 1); ... } PQclear ( result ); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  17. 17. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCKonular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  18. 18. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCG¨m¨l¨ SQL o uu a¸amalar: s 1 taban dil i¸inde SQL komutları i¸aretlenir: EXEC SQL c s 2 g¨m¨l¨ SQL ¨ni¸leyicisi: o uu o s g¨m¨l¨ SQL komutları → uygulama programı aray¨z¨ ¸a˘rıları o uu u uc g 3 taban dil derleyicisi avantajları: hızlı, standart dezavantajları: kullanı¸sız, farklı diller i¸in deste˘i yok s c g G¨m¨l¨ SQL b¨l¨m¨n¨ atla o uu ou u u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  19. 19. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCG¨m¨l¨ SQL o uu a¸amalar: s 1 taban dil i¸inde SQL komutları i¸aretlenir: EXEC SQL c s 2 g¨m¨l¨ SQL ¨ni¸leyicisi: o uu o s g¨m¨l¨ SQL komutları → uygulama programı aray¨z¨ ¸a˘rıları o uu u uc g 3 taban dil derleyicisi avantajları: hızlı, standart dezavantajları: kullanı¸sız, farklı diller i¸in deste˘i yok s c g G¨m¨l¨ SQL b¨l¨m¨n¨ atla o uu ou u u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  20. 20. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCG¨m¨l¨ SQL o uu ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  21. 21. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCG¨m¨l¨ SQL Standardı o uu taban dil ile de˘i¸ken payla¸ımı gs s hata denetimi sorgu sonu¸larının uyarlanması c ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  22. 22. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCDe˘i¸ken Payla¸ımı gs s Yazım EXEC SQL BEGIN DECLARE SECTION ; shared variables EXEC SQL END DECLARE SECTION ; SQL komutlarında taban dil de˘i¸kenlerinin ¨n¨ne ’:’ gs o u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  23. 23. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCHata Denetimi Hata ˙sleme I¸ EXEC SQL WHENEVER { SQLERROR | SQLWARNING | NOT FOUND } { STOP | CONTINUE | DO command | GOTO label } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  24. 24. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCSorgu Sonu¸larının Uyarlanması c ˙ cler Imle¸ EXEC SQL DECLARE cursor_name CURSOR FOR SELECT ...; EXEC SQL OPEN cursor_name ; EXEC SQL FETCH IN cursor_name INTO variables ; EXEC SQL CLOSE cursor_name ; tanımlama i¸leminde sorgu ¸alı¸tırılmaz s c s a¸ma i¸lemiyle sorgu ¸alı¸tırılır c s c s imle¸ sonu¸ k¨mesinin ilk satırına konumlandırılır c c u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  25. 25. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCSorgu Sonu¸larının Uyarlanması c ˙ cler Imle¸ EXEC SQL DECLARE cursor_name CURSOR FOR SELECT ...; EXEC SQL OPEN cursor_name ; EXEC SQL FETCH IN cursor_name INTO variables ; EXEC SQL CLOSE cursor_name ; tanımlama i¸leminde sorgu ¸alı¸tırılmaz s c s a¸ma i¸lemiyle sorgu ¸alı¸tırılır c s c s imle¸ sonu¸ k¨mesinin ilk satırına konumlandırılır c c u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  26. 26. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gG¨m¨l¨ SQL Orne˘i o uu ¨ Ornek (veri tabanına ba˘lanma) g EXEC SQL BEGIN DECLARE SECTION ; int year ; char * title = NULL , * score = NULL ; EXEC SQL END DECLARE SECTION ; EXEC SQL CONNECT TO imdb USER itucs IDENTIFIED BY itucs ; /* process query */ EXEC SQL DISCONNECT ; ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  27. 27. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gG¨m¨l¨ SQL Orne˘i o uu ¨ Ornek (sorgunun i¸lenmesi) s scanf ( " % d " , & year ); EXEC SQL DECLARE c_query CURSOR FOR SELECT TITLE , SCORE FROM MOVIE WHERE ( YR = : year ); EXEC SQL OPEN c_query ; /* execute query */ EXEC SQL CLOSE c_query ; EXEC SQL COMMIT ; ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  28. 28. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gG¨m¨l¨ SQL Orne˘i o uu ¨ Ornek (sorgunun ¸alı¸tırılması) c s EXEC SQL WHENEVER NOT FOUND DO break ; while (1) { EXEC SQL FETCH c_query INTO : title , : score ; ... } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  29. 29. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCKonular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  30. 30. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC ODBC: Open DataBase Connectivity uygulama ile sunucu arasında bir servis katmanı avantajları: standart dezavantajları: yava¸ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  31. 31. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC ODBC: Open DataBase Connectivity uygulama ile sunucu arasında bir servis katmanı avantajları: standart dezavantajları: yava¸ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  32. 32. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC Mimarisi uygulama s¨r¨c¨ y¨neticisi uu u o ODBC s¨r¨c¨lerini kaydeder uu u uygulamadan gelen ODBC isteklerini ilgili s¨r¨c¨ye aktarır uu u s¨r¨c¨ uu u istekleri veri kayna˘ına uygun ¸ekilde iletir g s veri kayna˘ı g s¨r¨c¨den gelen komutları i¸ler uu u s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  33. 33. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC Mimarisi uygulama s¨r¨c¨ y¨neticisi uu u o ODBC s¨r¨c¨lerini kaydeder uu u uygulamadan gelen ODBC isteklerini ilgili s¨r¨c¨ye aktarır uu u s¨r¨c¨ uu u istekleri veri kayna˘ına uygun ¸ekilde iletir g s veri kayna˘ı g s¨r¨c¨den gelen komutları i¸ler uu u s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  34. 34. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC Mimarisi uygulama s¨r¨c¨ y¨neticisi uu u o ODBC s¨r¨c¨lerini kaydeder uu u uygulamadan gelen ODBC isteklerini ilgili s¨r¨c¨ye aktarır uu u s¨r¨c¨ uu u istekleri veri kayna˘ına uygun ¸ekilde iletir g s veri kayna˘ı g s¨r¨c¨den gelen komutları i¸ler uu u s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  35. 35. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCODBC Mimarisi uygulama s¨r¨c¨ y¨neticisi uu u o ODBC s¨r¨c¨lerini kaydeder uu u uygulamadan gelen ODBC isteklerini ilgili s¨r¨c¨ye aktarır uu u s¨r¨c¨ uu u istekleri veri kayna˘ına uygun ¸ekilde iletir g s veri kayna˘ı g s¨r¨c¨den gelen komutları i¸ler uu u s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  36. 36. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gODBC Orne˘i ¨ Ornek (PHP) $conn = odbc_connect ( " imdb " , " itucs " , " itucs " ); $query = " SELECT TITLE , SCORE FROM MOVIE " . " WHERE ( YR = " . $year . " ) " ; $result = odbc_exec ( $conn , $query ); /* process the result set */ odbc_close ( $conn ); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  37. 37. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gODBC Orne˘i ¨ Ornek (sonu¸ k¨mesinin i¸lenmesi) c u s echo " < table > n " ; while ( odbc_fetch_row ( $result )) { $title = odbc_result ( $result , " title " ); $score = odbc_result ( $result , " score " ); echo " <tr > n " ; echo " <td > $title </ td > n " ; echo " <td > $score </ td > n " ; echo " </ tr > n " ; } echo " </ table > n " ; ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  38. 38. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCKonular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  39. 39. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC JDBC: Java DataBase Connectivity ODBC ile aynı mimari kavramları de˘i¸ik s¨r¨c¨ tipleri gs u u u ba˘lantı i¸in JDBC URL adresi g c jdbc:<altprotokol>:<parametreler> Java ile SQL veri tiplerinin e¸le¸tirilmesi s s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  40. 40. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC JDBC: Java DataBase Connectivity ODBC ile aynı mimari kavramları de˘i¸ik s¨r¨c¨ tipleri gs u u u ba˘lantı i¸in JDBC URL adresi g c jdbc:<altprotokol>:<parametreler> Java ile SQL veri tiplerinin e¸le¸tirilmesi s s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  41. 41. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC JDBC: Java DataBase Connectivity ODBC ile aynı mimari kavramları de˘i¸ik s¨r¨c¨ tipleri gs u u u ba˘lantı i¸in JDBC URL adresi g c jdbc:<altprotokol>:<parametreler> Java ile SQL veri tiplerinin e¸le¸tirilmesi s s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  42. 42. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC JDBC: Java DataBase Connectivity ODBC ile aynı mimari kavramları de˘i¸ik s¨r¨c¨ tipleri gs u u u ba˘lantı i¸in JDBC URL adresi g c jdbc:<altprotokol>:<parametreler> Java ile SQL veri tiplerinin e¸le¸tirilmesi s s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  43. 43. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC S¨r¨c¨leri uu u 1 Tip I: k¨pr¨ler o u ba¸ka sistemlerin ¸a˘rılarına d¨n¨¸t¨r (¨rne˘in ODBC) s c g o us u o g 2 Tip II: Java olmayan bir s¨r¨c¨yle do˘rudan ¸eviri uu u g c veri kayna˘ının uygulama aray¨z¨ne ¸evir (¨rne˘in C++) g u u c o g 3 Tip III: a˘ k¨pr¨leri g o u veri kayna˘ının uygulama aray¨z¨ne ¸evirmesi i¸in g u u c c orta katman yazılımına ba˘lan g 4 Tip IV: Java s¨r¨c¨s¨yle do˘rudan ¸eviri uu uu g c VTYS ile Java soketleri uzerinden ileti¸im kur ¨ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  44. 44. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC S¨r¨c¨leri uu u 1 Tip I: k¨pr¨ler o u ba¸ka sistemlerin ¸a˘rılarına d¨n¨¸t¨r (¨rne˘in ODBC) s c g o us u o g 2 Tip II: Java olmayan bir s¨r¨c¨yle do˘rudan ¸eviri uu u g c veri kayna˘ının uygulama aray¨z¨ne ¸evir (¨rne˘in C++) g u u c o g 3 Tip III: a˘ k¨pr¨leri g o u veri kayna˘ının uygulama aray¨z¨ne ¸evirmesi i¸in g u u c c orta katman yazılımına ba˘lan g 4 Tip IV: Java s¨r¨c¨s¨yle do˘rudan ¸eviri uu uu g c VTYS ile Java soketleri uzerinden ileti¸im kur ¨ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  45. 45. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC S¨r¨c¨leri uu u 1 Tip I: k¨pr¨ler o u ba¸ka sistemlerin ¸a˘rılarına d¨n¨¸t¨r (¨rne˘in ODBC) s c g o us u o g 2 Tip II: Java olmayan bir s¨r¨c¨yle do˘rudan ¸eviri uu u g c veri kayna˘ının uygulama aray¨z¨ne ¸evir (¨rne˘in C++) g u u c o g 3 Tip III: a˘ k¨pr¨leri g o u veri kayna˘ının uygulama aray¨z¨ne ¸evirmesi i¸in g u u c c orta katman yazılımına ba˘lan g 4 Tip IV: Java s¨r¨c¨s¨yle do˘rudan ¸eviri uu uu g c VTYS ile Java soketleri uzerinden ileti¸im kur ¨ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  46. 46. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC S¨r¨c¨leri uu u 1 Tip I: k¨pr¨ler o u ba¸ka sistemlerin ¸a˘rılarına d¨n¨¸t¨r (¨rne˘in ODBC) s c g o us u o g 2 Tip II: Java olmayan bir s¨r¨c¨yle do˘rudan ¸eviri uu u g c veri kayna˘ının uygulama aray¨z¨ne ¸evir (¨rne˘in C++) g u u c o g 3 Tip III: a˘ k¨pr¨leri g o u veri kayna˘ının uygulama aray¨z¨ne ¸evirmesi i¸in g u u c c orta katman yazılımına ba˘lan g 4 Tip IV: Java s¨r¨c¨s¨yle do˘rudan ¸eviri uu uu g c VTYS ile Java soketleri uzerinden ileti¸im kur ¨ s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  47. 47. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC Akı¸ı s bir ba˘lantı nesnesi al g statik: DriverManager.getConnection() → Connection ba˘lantı uzerinde bir komut nesnesi yarat g ¨ Connection.createStatement() → Statement sorguyu ¸alı¸tır c s okuma: Statement.executeQuery(query) → ResultSet ekleme, g¨ncelleme, silme: u Statement.executeUpdate(query) sonu¸ları i¸le c s i¸i biten kaynakları kapat s (sonu¸ k¨mesi, komut, ba˘lantı) c u g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  48. 48. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC Akı¸ı s bir ba˘lantı nesnesi al g statik: DriverManager.getConnection() → Connection ba˘lantı uzerinde bir komut nesnesi yarat g ¨ Connection.createStatement() → Statement sorguyu ¸alı¸tır c s okuma: Statement.executeQuery(query) → ResultSet ekleme, g¨ncelleme, silme: u Statement.executeUpdate(query) sonu¸ları i¸le c s i¸i biten kaynakları kapat s (sonu¸ k¨mesi, komut, ba˘lantı) c u g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  49. 49. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC Akı¸ı s bir ba˘lantı nesnesi al g statik: DriverManager.getConnection() → Connection ba˘lantı uzerinde bir komut nesnesi yarat g ¨ Connection.createStatement() → Statement sorguyu ¸alı¸tır c s okuma: Statement.executeQuery(query) → ResultSet ekleme, g¨ncelleme, silme: u Statement.executeUpdate(query) sonu¸ları i¸le c s i¸i biten kaynakları kapat s (sonu¸ k¨mesi, komut, ba˘lantı) c u g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  50. 50. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC Akı¸ı s bir ba˘lantı nesnesi al g statik: DriverManager.getConnection() → Connection ba˘lantı uzerinde bir komut nesnesi yarat g ¨ Connection.createStatement() → Statement sorguyu ¸alı¸tır c s okuma: Statement.executeQuery(query) → ResultSet ekleme, g¨ncelleme, silme: u Statement.executeUpdate(query) sonu¸ları i¸le c s i¸i biten kaynakları kapat s (sonu¸ k¨mesi, komut, ba˘lantı) c u g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  51. 51. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCJDBC Akı¸ı s bir ba˘lantı nesnesi al g statik: DriverManager.getConnection() → Connection ba˘lantı uzerinde bir komut nesnesi yarat g ¨ Connection.createStatement() → Statement sorguyu ¸alı¸tır c s okuma: Statement.executeQuery(query) → ResultSet ekleme, g¨ncelleme, silme: u Statement.executeUpdate(query) sonu¸ları i¸le c s i¸i biten kaynakları kapat s (sonu¸ k¨mesi, komut, ba˘lantı) c u g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  52. 52. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCSonu¸ların ˙slenmesi c I¸ ResultSet bir yineleyici ba¸ta satır olup olmadı˘ı: ResultSet.hasNext() s g sıradaki satıra ge¸: ResultSet.next() c satırdaki veriyi uygun tiplere d¨n¨¸t¨rerek de˘i¸kenlere aktar o us u gs s¨tunun adıyla: ResultSet.getXXX(name) u s¨tunun sıra numarasıyla: ResultSet.getXXX(order) u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  53. 53. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCSonu¸ların ˙slenmesi c I¸ ResultSet bir yineleyici ba¸ta satır olup olmadı˘ı: ResultSet.hasNext() s g sıradaki satıra ge¸: ResultSet.next() c satırdaki veriyi uygun tiplere d¨n¨¸t¨rerek de˘i¸kenlere aktar o us u gs s¨tunun adıyla: ResultSet.getXXX(name) u s¨tunun sıra numarasıyla: ResultSet.getXXX(order) u ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  54. 54. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCVeri Tipi D¨n¨¸umleri o us ¨ SQL tipi Java sınıfı ResultSet metodu BIT Boolean getBoolean() CHAR String getString() VARCHAR String getString() DOUBLE Double getDouble() FLOAT Float getDouble() INTEGER Integer getInt() REAL Double getFloat() DATE java.sql.Date getDate() TIME java.sql.Time getTime() TIMESTAMP java.sql.TimeStamp getTimestamp() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  55. 55. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gJDBC Orne˘i ¨ Ornek (veri tabanı s¨r¨c¨s¨n¨n y¨klenmesi) uu uu u u try { Class . forName ( " org . postgresql . Driver " ); } catch ( ClassNo t F o u nd E x c e pt i o n e ) { // PostgreSQL driver not installed } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  56. 56. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gJDBC Orne˘i ¨ Ornek (veri tabanına ba˘lantı) g try { Connection conn = DriverManager . getConnection ( " jdbc : postgresql : imdb " , " itucs " , " itucs " ); } catch ( SQLException e ) { // connection error } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  57. 57. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gJDBC Orne˘i ¨ Ornek (ekleme) String query = " INSERT INTO MOVIE ( TITLE , YR ) " + " VALUES ( ’ Casablanca ’, 1942) " ; Statement stmt = conn . createStatement (); stmt . executeUpdate ( query ); stmt . close (); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  58. 58. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCHazır Komutlar hazır komutlar parametre de˘erleri de˘i¸tirilerek g gs yeniden kullanılabilir yaratma: Connection.prepareStatement(query) → PreparedStatement sorguda parametreler i¸in yer tutucu: ’?’ c c s ¸alı¸tırmadan ¨nce de˘erleri ayarlanmalı: o g PreparedStatement.setXXX(order, value) c s ¸alı¸tırma: PreparedStatement.executeQuery() ya da PreparedStatement.executeUpdate() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  59. 59. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCHazır Komutlar hazır komutlar parametre de˘erleri de˘i¸tirilerek g gs yeniden kullanılabilir yaratma: Connection.prepareStatement(query) → PreparedStatement sorguda parametreler i¸in yer tutucu: ’?’ c c s ¸alı¸tırmadan ¨nce de˘erleri ayarlanmalı: o g PreparedStatement.setXXX(order, value) c s ¸alı¸tırma: PreparedStatement.executeQuery() ya da PreparedStatement.executeUpdate() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  60. 60. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCHazır Komutlar hazır komutlar parametre de˘erleri de˘i¸tirilerek g gs yeniden kullanılabilir yaratma: Connection.prepareStatement(query) → PreparedStatement sorguda parametreler i¸in yer tutucu: ’?’ c c s ¸alı¸tırmadan ¨nce de˘erleri ayarlanmalı: o g PreparedStatement.setXXX(order, value) c s ¸alı¸tırma: PreparedStatement.executeQuery() ya da PreparedStatement.executeUpdate() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  61. 61. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gHazır Komut Orne˘i ¨ Ornek (ekleme - hazır komutla) String query = " INSERT INTO MOVIE ( TITLE , YR ) " + " VALUES (? , ?) " ; PreparedStatement stmt = conn . prepareStatement ( query ); for ( Movie movie : getMovies ()) { stmt . setString (1 , movie . getTitle ()); stmt . setInt (2 , movie . getYear ()); stmt . executeUpdate (); } stmt . close (); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  62. 62. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gSonu¸ K¨mesi Orne˘i c u ¨ Ornek (bir yıldaki film ba¸lıklarını listeleme) s String query = String . format ( " SELECT TITLE FROM MOVIE WHERE ( YR = % d ) " , year ); Statement stmt = conn . createStatement (); ResultSet results = stmt . executeQuery ( query ); while ( results . next ()) { String title = results . getString ( " TITLE " ); System . out . println ( " Title : " + title ) , } results . close (); stmt . close (); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  63. 63. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gJDBC Orne˘i ¨ Ornek (silme) String query = " DELETE FROM MOVIE " + " WHERE ( ID = ?) " ; PreparedStatement stmt = conn . prepareStatement ( query ); stmt . setInt (1 , movie . getId ()); stmt . executeUpdate (); stmt . close (); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  64. 64. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gJDBC Orne˘i ¨ Ornek (g¨ncelleme) u String query = " UPDATE MOVIE SET YR = ? " + " WHERE ( ID = ?) " ; PreparedStatement stmt = conn . prepareStatement ( query ); stmt . setInt (1 , movie . getYear ()); stmt . setInt (2 , movie . getId ()); stmt . executeUpdate (); stmt . close (); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  65. 65. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCKaynakları Kapama sonu¸ k¨mesi, komut gibi kaynakların c u try - catch - finally bloklarının finally kısmında kapatılması ¨nerilir o ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  66. 66. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gKaynakları Kapatma Orne˘i Statement stmt = conn . createStatement (); ResultSet results = null ; try { results = stmt . executeQuery ( query ); ... } catch ( SQLException e ) { ... } finally { results . close (); stmt . close (); } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  67. 67. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCOtomatik Kimlik De˘erleri g otomatik uretilen kimlik de˘erleri sorulmak isteniyorsa, ¨ g komutu yaratırken RETURN_GENERATED_KEYS bayra˘ı kullanılır g komutu ¸alı¸tırdıktan sonra: c s Statement.getGeneratedKeys() → ResultSet ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  68. 68. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gOtomatik Kimlik De˘erleri Orne˘i g String query = " INSERT INTO ... " ; PreparedStatement stmt = connection . prepareStatement ( query , Statement . RE T UR N_ G EN E RA TE D _K EY S ); stmt . executeUpdate (); ResultSet ids = stmt . getGeneratedKeys (); // assuming there is one and only one result ids . next (); int id = ids . getInt (1); ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  69. 69. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCToplu Komut Calı¸tırma ¸ s komutları biriktirerek topluca ¸alı¸tırmak hız kazandırabilir c s ba˘lantı ” g auto commit” kipinden ¸ıkarılır c biriktirme: Statement.addBatch(query) birikenleri ¸alı¸tırma: Statement.executeBatch() c s yazmayı sonlandırma: Connection.commit() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  70. 70. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBCToplu Komut Calı¸tırma ¸ s komutları biriktirerek topluca ¸alı¸tırmak hız kazandırabilir c s ba˘lantı ” g auto commit” kipinden ¸ıkarılır c biriktirme: Statement.addBatch(query) birikenleri ¸alı¸tırma: Statement.executeBatch() c s yazmayı sonlandırma: Connection.commit() ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  71. 71. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC ¨ gToplu Komut Calı¸tırma Orne˘i ¸ s stmt = conn . createStatement ( ... ); conn . setAutoCommit ( false ); int queryCount = 0; int batchSize = 100; for ( ... ) { stmt . addBatch ( query ); queryCount ++; if ( queryCount % batchSize == 0) { stmt . executeBatch (); conn . commit (); } } ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  72. 72. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC¨Onceden Okuma Miktarı JDBC s¨r¨c¨leri sorgudaki satırları ¨nceden okur uu u o ba¸arımı artırır ama bellek harcamasını da artırır s k¨¸uk bir ¨nceden okuma miktarı bellek harcamasını azaltır: uc¨ o Statement.setFetchSize(count) ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  73. 73. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC¨Onceden Okuma Miktarı JDBC s¨r¨c¨leri sorgudaki satırları ¨nceden okur uu u o ba¸arımı artırır ama bellek harcamasını da artırır s k¨¸uk bir ¨nceden okuma miktarı bellek harcamasını azaltır: uc¨ o Statement.setFetchSize(count) ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  74. 74. Giri¸ s Uygulama Geli¸tirme s G¨m¨l¨ SQL o uu SQL ODBC Kaynaklar JDBC¨ ¨ gOnceden Okuma Miktarı Orne˘i stmt . setFetchSize (1); // MySQL stmt . setFetchSize ( Integer . MIN_VALUE ) ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  75. 75. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Konular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  76. 76. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Kayıtlı Yordamlar uygulamanın bazı i¸levleri s veri tabanı sunucusunda ger¸eklenebilir c diller: SQL, PL/SQL, C, ... tavsiye edilmez ta¸ınabilir de˘il s g oc ¨l¸eklenebilir de˘il g veri tabanı sunucuları i¸ mantı˘ına g¨re optimize edilmiyor s g o → i¸ mantı˘ı uygulama sunucusunda ger¸eklenmeli s g c ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  77. 77. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Kayıtlı Yordamlar uygulamanın bazı i¸levleri s veri tabanı sunucusunda ger¸eklenebilir c diller: SQL, PL/SQL, C, ... tavsiye edilmez ta¸ınabilir de˘il s g oc ¨l¸eklenebilir de˘il g veri tabanı sunucuları i¸ mantı˘ına g¨re optimize edilmiyor s g o → i¸ mantı˘ı uygulama sunucusunda ger¸eklenmeli s g c ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  78. 78. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Fonksiyon Yaratma Komut CREATE FUNCTION function_name ([ parameter_type [ , ...]]) RETURNS return_type AS function_body LANGUAGE language_name birinci parametre $1, ikinci parametre $2, ... ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  79. 79. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ¨ gSQL Fonksiyonu Orne˘i ¨ Ornek (yeni puan hesaplanması) $1: eski puan, $2: eski oy sayısı, $3: yeni oy CREATE FUNCTION NEW_SCORE ( float , int , int ) RETURNS float AS ’ SELECT ( $1 * $2 + $3 ) / ( $2 +1); ’ LANGUAGE ’ sql ’ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  80. 80. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Tetikler Tanım tetik: belirli olaylarda kendili˘inden etkinle¸tirilen fonksiyon g s b¨t¨nl¨˘u sa˘lamaya yardımcı olabilir u u ug¨ g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  81. 81. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Tetik Yaratma Komut CREATE TRIGGER trigger_name { BEFORE | AFTER } { event [ OR ... ] } ON table_name [ FOR [ EACH ] { ROW | STATEMENT } ] EXECUTE PROCEDURE function_name (...) PL/pgSQL: old: ¸oklunun i¸lemden ¨nceki de˘eri c s o g new: ¸oklunun i¸lemden sonraki de˘eri c s g ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  82. 82. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ¨ gTetik Orne˘i ¨ Ornek (SCORE * VOTES de˘eri POINTS s¨tununda tutulsun) g u CREATE FUNCTION UPDA TE_MOVIE _POINTS () RETURNS opaque AS ’ BEGIN new . POINTS = new . SCORE * new . VOTES ; RETURN new ; END ; ’ LANGUAGE ’ plpgsql ’ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  83. 83. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ¨ gTetik Orne˘i ¨ Ornek (POINTS s¨tunu g¨ncellemelerde kendili˘inden hesaplansın) u u g CREATE TRIGGER UPDATE_MOVIE BEFORE INSERT OR UPDATE ON MOVIE FOR EACH ROW EXECUTE PROCEDURE UPDA TE_MOVIE _POINTS () ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  84. 84. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Konular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  85. 85. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸G¨r¨nt¨ler ou u t¨retilmi¸ tabloyu taban tablo gibi g¨stermek u s o veri tabanı yapısındaki de˘i¸ikliklerden gs kullanıcıların ve uygulama programlarının etkilenmemesi ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  86. 86. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸G¨r¨nt¨ler ou u t¨retilmi¸ tabloyu taban tablo gibi g¨stermek u s o veri tabanı yapısındaki de˘i¸ikliklerden gs kullanıcıların ve uygulama programlarının etkilenmemesi ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  87. 87. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸G¨r¨nt¨ Yaratma ou u Komut CREATE VIEW view_name AS SELECT ... g¨r¨nt¨ uzerindeki her i¸lemde ou u¨ s SELECT komutu yeniden ¸alı¸tırılır c s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  88. 88. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ou u ¨ gG¨r¨nt¨ Orne˘i ¨ Ornek CREATE VIEW NEW_MOVIE AS SELECT ID , TITLE , YR FROM MOVIE WHERE ( YR > 1995) SELECT * FROM NEW_MOVIE ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  89. 89. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸G¨r¨nt¨de G¨ncelleme ou u u g¨ncellemeler taban tablolarda yapılmalı u kural belirtilmeli Kural Yaratma CREATE RULE rule_name AS ON event TO view_name [ WHERE condition ] DO [ INSTEAD ] sql_statement ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  90. 90. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸G¨r¨nt¨de G¨ncelleme ou u u g¨ncellemeler taban tablolarda yapılmalı u kural belirtilmeli Kural Yaratma CREATE RULE rule_name AS ON event TO view_name [ WHERE condition ] DO [ INSTEAD ] sql_statement ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  91. 91. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ¨ gG¨r¨nt¨ Kuralı Orne˘i ou u ¨ Ornek UPDATE NEW_MOVIE SET TITLE = ’ .. ’ WHERE ( ID = 1) CREATE RULE UPDATE_TITLE AS ON UPDATE TO NEW_MOVIES DO INSTEAD UPDATE MOVIE SET TITLE = new . TITLE WHERE ( ID = old . ID ) ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  92. 92. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸ ¨ gG¨r¨nt¨ Kuralı Orne˘i ou u ¨ Ornek UPDATE NEW_MOVIE SET TITLE = ’ .. ’ WHERE ( ID = 1) CREATE RULE UPDATE_TITLE AS ON UPDATE TO NEW_MOVIES DO INSTEAD UPDATE MOVIE SET TITLE = new . TITLE WHERE ( ID = old . ID ) ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  93. 93. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸Konular 1 Uygulama Geli¸tirme s Giri¸ s G¨m¨l¨ SQL o uu ODBC JDBC 2 SQL Kayıtlı Yordamlar G¨r¨nt¨ler ou u ˙ Izinler ˙ cları Ipu¸ ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri
  94. 94. Kayıtlı Yordamlar Uygulama Geli¸tirme s G¨r¨nt¨ler ou u SQL ˙ Izinler Kaynaklar ˙ cları Ipu¸˙Izinler ¨zne: kullanıcı, kullanıcı grubu o nesne: tablo, s¨tun, g¨r¨nt¨, veri tabanı, ... u ou u nesnenin sahibi olan ¨zne o di˘er ¨znelerin eri¸im yetkilerini belirler g o s ¸ ¨ g¨ u u H. Turgut Uyar, Sule O˘ud¨c¨ Veri Tabanı Sistemleri

×