[ Pobierz całość w formacie PDF ]
//-->Dostęp do baz danych przywykorzystaniu interfejsu JDBC1 WprowadzenieW opisie zadań wykorzystano środowisko programistyczneNetBeans(wersja 7.2.1). Celem ćwiczeniajest zapoznanie studenta z mechanizmem dostępu do bazy danych z poziomu języka Java.Przedstawione zostaną takie elementy jak nawiązywanie połączenia, wykonywanie zapytań prostych iparametryzowanych, obsługa transakcji, uruchamianie procedur w bazie danych itp.2 Utworzenie projektu w środowisku NetBeans2.1 Uruchom środowiskoNetBeans.2.2 Utwórz nowy projekt wybierając z górnego menuFile->New Project.2.3 Wybierz kategorięJavai wskaż jako typ projektuJava Application.Naciśnij przyciskNext >.2.4 Wprowadź nazwę projektu np.lab_JDBC.Pozostałe opcje pozostaw bez zmian. Naciśnij przyciskFinishaby zakończyć działanie kreatora.2.5 Efektem działania kreatora jest utworzenie projektu o wskazanej nazwie. W projekcieautomatycznie zostanie dodany pakietlab_jdbcz klasąLab_JDBC.W tej klasie znajduje sięrównież metodamain,która stanowi punkt startowy wykonania programu.2.6 Utworzony projekt możesz uruchomić wybierając z górnego menu opcjęRun->Run Projectlubużywając skrótu klawiszowegoF6.Przed uruchomieniem nastąpi automatyczna kompilacjaprogramu. Efekty pracy kompilatora oraz programu zostaną wyświetlone w oknieOutput.3 Nawiązanie połączenia z bazą danych.3.1 Połączenie z bazą danych nawiązywane jest przy wykorzystaniu klasyDriverManager.Koniecznejest podanie URL wskazującego na konkretną instancję bazy danych oraz nazwy użytkownika ihasła. Ponieważ różne czynniki mogą spowodować brak możliwości ustanowienia połączenia (np.złe hasło, błędny host itp.), należy przechwycić wyjątekSQLException.W poniższym przykładzie,po wykryciu wyjątku na stosie, na konsoli zostanie wyświetlony komunikat „nie udało się połączyćz bazą danych”. Pierwszy parametr metodylogdla obiektu typuLoggerto poziom błędu. W tymprzypadku, opcjaSEVEREoznacza poważny błąd. Skopiuj poniższy fragment kodu do metodymain....Connection conn =null;Properties connectionProps =newProperties();connectionProps.put("user","login");connectionProps.put("password","haslo");try{conn = DriverManager.getConnection("jdbc:oracle:thin:@//admlab2-main.cs.put.poznan.pl:1521/dblab01.cs.put.poznan.pl",connectionProps);System.out.println("Połączonoz bazą danych");}catch(SQLException ex) {Logger.getLogger(Lab_JDBC.class.getName()).log(Level.SEVERE,"nie udało się połączyć z bazą danych",ex);System.exit(-1);}...3.2 Dodaj przed deklaracją klasyLab_JDBCnastępujące polecenia. Służą one do zaimportowaniaobiektów wykorzystywanych przy komunikacjiJDBCoraz do logowania zdarzeń.importimportimportimportjava.sql.*;java.util.Properties;java.util.logging.Level;java.util.logging.Logger;3.3 Uruchom aplikację i sprawdź efekt jej działania (komunikaty na konsoli).UWAGA!Jednym z możliwych wyników jest następujący błąd:run:lis 05, 2012 10:02:28 PM lab_jdbc.Lab_JDBC mainSEVERE: nie udało się połączyć z bazą danychjava.sql.SQLException: No suitable driver found forjdbc:oracle:thin:@//admlab2-min.cs.put.poznan.pl:1521/dblab01at java.sql.DriverManager.getConnection(DriverManager.java:604)at java.sql.DriverManager.getConnection(DriverManager.java:190)at lab_jdbc.Lab_JDBC.main(Lab_JDBC.java:22)Java Result: -1BUILD SUCCESSFUL (total time: 0 seconds)Komunikat ten oznacza, że nie udało się odnaleźć sterownika do bazy danych. Może to wynikaćnp. z tego, że plik sterownika nie jest dostępny na ścieżce wskazywanej przez zmiennąCLASSPATH.W środowiskuNetBeansmożna dodać do projektu biblioteki (w tym przypadku pliksterownikaJDBC),które będą dostępne dla aplikacji. W tym celu:(a) Kliknij prawym przyciskiem myszy na węzełLibrariesw drzewie projektu.(b) Z dostępnych opcji wybierzAdd JAR/Folder….(c) Wskaż plik sterownika (w konfiguracji używanej na zajęciach jest toojdbc6.jar).NaciśnijprzyciskOpen.(d) Ponownie uruchom aplikację. Poprawny wynik działania powinien wyglądać następująco:run:Połączono z bazą danychBUILD SUCCESSFUL (total time: 0 seconds)UWAGA!Jeżeli używasz sterownikaJDBCw wersji niższej niż 4, konieczne jest dodanie (napoczątku) następującego kodu, który rejestruje sterownik:Class.forName("oracle.jdbc.driver.OracleDriver");W przypadku opisywanego rozwiązania, sterownikodbjc6.jarobsługuje mechanizmJDBCw wersji4 i nie należy umieszczać w/w kodu.3.4 Jako ostatni rozkaz metodymaindodaj polecenie rozłączenia się z bazą danych. Zauważ, żeśrodowisko programistyczne podkreśliło dodany fragment kodu. Jest to spowodowanekoniecznością obsługi wyjątków, które mogą się pojawić przy operacjach wywoływanych na baziedanych.3.5 Kliknij lewym przyciskiem myszy na ikonkę żarówki po lewej stronie pola tekstowego.3.6 Wybierz opcjęSurround Statement with try-catch.Obejrzyj wygenerowany kod.3.7 Dodaj na końcu metodymaininformację o odłączeniu się od bazy danych. Możesz to zrobićużywając metodyprintln.(Wskazówka dla użytkownikówNetBeans:napiszsouti naciśnij klawisztabulatora, automatycznie zostanie wygenerowany kodSystem.out.println(""),który możnauzupełnić o własny parametr będący tekstem przeznaczonym do wyświetlenia na konsoli).4 Odczyt danych4.1 Przed wykonaniem poleceniaSQLnależy utworzyć obiekt implementujący interfejsStatement.Można tego dokonać poprzez wywołanie bezparametrowej metodycreateStatementna obiekciepołączenia do bazy danych.Statement stmt;stmt = conn.createStatement();4.2 Do odczytu danych z bazy danych wykorzystywany jest obiekt implementujący interfejsResultSet.Możesz go uzyskać poprzez wywołanie metodyexecuteQuerydostarczanej przez interfejsStatement.Parametr metody to treść zapytaniaSQL.Nie wstawiaj średnika na końcu zapytania.ResultSet rs;rs = stmt.executeQuery("treśćzapytania SQL");4.3 InterfejsResultSetdostarcza metody, które mogą być wykorzystane do odczytania wynikuwykonania zapytania. Wśród tych metod można znaleźć m.in. bezparametrową metodęnext,która przesuwa wskaźnik na kolejną krotkę ze zbioru wyników. Po utworzeniu obiektuimplementującego interfejsResultSet,wskaźnik ten znajduje się przed pierwszą krotką ze zbioruwyników. Metoda zwraca wartośćtruejeśli udało się przejść do kolejnej krotki, w przeciwnymwypadku zwracana jest wartośćfalse.boolean w = rs.next();4.4 InterfejsResultSetdostarcza także metody do pobrania wartości z aktualnie wskazywanej krotki.Są to, m.in.,getInt, getString, getFloat.Każda z tych metod przyjmuje jako parametr jedną zwartości: indeks atrybutu z klauzuliSELECTlub nazwę atrybutu z klauzuliSELECT.Typ zwracanejwartości zależy od wybranej metody.int x = rs.getInt(4);String s = rs.getString(1);Pełną listę metod możesz uzyskać czytając dokumentacjęAPI JDBClub poprzez wykorzystaniepodpowiedzi kontekstowych w środowiskuNetBeans.Wpisz „rs.get” a na ekranie pojawi się listadostępnych metod interfejsuResultSetzaczynających się od słowaget.
[ Pobierz całość w formacie PDF ]