Menu

JDBC

PGaczynski

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTutorial {

public static void main(String [] args) throws SQLException{


    /* Tutorial nawiazania polaczenia do bazy danych oraz wykonywania polecen SQL.

     * W ponizszym tutorialu przedstawiam sposob na polaczenie z baza danych Oracle.
     * W projekcie bedziemy wykorzystywac co prawda baze danych H2, ale sposob polaczenia
     * w wypadku obu baz jest identyczny. Moim zdaniem latwiej bedzie wam zrozumiec
     * mechanizmy JDBC przedstawione na tabelach, ktorych uzywamy na cwiczeniach z baz.
     * 
     * 
     */
    try {

        /* Dane do rejestracj klasy sterownika bazy danych. Istnieje

                     * alternatywna metoda
         * polegajaca na odpowiednim skonfigurowaniu wlasciwosci jdbc.property, ale ta
         * wydaje mi sie prostsza. Sterownik odpowiedni dla danej bazy danych powinien
         * znajdowac sie na stronie jej producenta.
         * Nalezy pamietac, zeby sciagnac sterownik odpowiedni dla naszej wersji javy.
         * 
         */
        String driver ="oracle.jdbc.OracleDriver";  
        /*
         * Ponizsze parametry to kolejno: adres, nazwa uzytkownika oraz haslo w
                     * bazie danych.
         */
        String url ="jdbc:oracle:thin:@localhost";
        String username = "pablo";
        String password = "12345";

        Connection conn=null;
        /*

         * Wyzej wspomniana rejestracja klasy sterownika
         */
        Class.forName(driver) ;

        /*

         * Nawiazanie polaczenia z baza. Tutaj wykorzystalem inny sposob 
                     * podawania danych
         * dostepowych do bazy. Aby wykorzystac wyzej zdefiniowane stringi 
                     * nalezy wywolac
         * Driver.getConnection(url, username, password)
         * 
         */
        conn = DriverManager.getConnection("jdbc:oracle:thin:pablo/12345@localhost:1521:XE"); 
        /*
         * Stworzenie obiektu wykorzystywanego do wykonywania zapytań i innych
                     * poleceń SQL
         */

        Statement stat = conn.createStatement();

        /*

         * Wykonanie polecenie sql. Wynik bedziemy wam wszystkim bardzo dobrze
                     * znany z laboratorium BD.
         * Obiekt ResultSet jest zwracany przez metode executeQuery() 
                     * jako zbior wynikow
         * zapytania SQL.
         */

        ResultSet result = stat.executeQuery("SELECT * FROM EMP");
        System.out.println("Empno  |  Ename  |  Job  |  Mgr  |  Hiredate |  Sal  |  Comm  |  Deptno");
        /*

         * Petla umozliwiajaca pobranie wynikow zapytania powyzszego.  
                     * ResultSet dziala na podobnej
         * zasadzie co java.util.Iterator. Najwazniejsze informacje:
         * Iterator klasy ResultSet znajduje sie poczatkowo na pozycji
                     * poprzedzajacej pierwszy wiersz.
         * Aby przesunac go na pozycje pierwszego rekordu musimy wywolac 
                     * metode next(). W przeciwienstwie
         * do java.util.Iterator, klasa ta nie posiada hasNext(). 
                     * Dlatego tez wywolujemy ja do momentu, gdy zwroci false.
         */
        while(result.next()){
            /*
             * Wyswietlenie wynikow w postaci lancuchow znakowych.
             * WAZNE: indeksujemy od 1, a nie od 0!
             * ISTOTNE: procz metod getString() ResultSet posiada inne metody 
                             * przeznaczone do zwracania innych typow np. getDouble()
             */
            System.out.println(result.getString(1) + " " + result.getString(2) + " " + result.getString(3) + " " + result.getString(4)+ " " + result.getString(5) + " " + result.getString(6) + " " + result.getString(7) + " " + result.getString(8));
        }
        result.close();

        /*

         * executeUpdate() - jest przeznaczona do wykonywania polecen jezyka 
                     * SQL typu: INSERT, UPDATE, DELETE lub CREATE TABLE
         */
        stat.executeUpdate("CREATE TABLE Tescik (Wiadomosc VARCHAR2(20))");
        stat.executeUpdate("INSERT INTO Tescik (Wiadomosc) VALUES ('Hello')");

        ResultSet result2 = stat.executeQuery("SELECT * FROM Tescik");
        while(result2.next()){
            System.out.println(result2.getString(1));
        }
        stat.executeUpdate("DROP TABLE Tescik");
        /*

         * zamkniecie obiektu zbiorow wynikow zapytania
         */
        result.close();
        result2.close();
        /*
         * zamkniecie polaczenia do bazy danych
         */
        conn.close();
        /*
         * zamkniecie obiektu polecenia
         */
        stat.close();

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }




}

}


MongoDB Logo MongoDB