Advertisement
Guest User

Untitled

a guest
May 30th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.71 KB | None | 0 0
  1.  
  2. //pakiety języka JAVA potrzebne do nawiązania (i obsługi) połączenia z BD
  3. import java.io.*;
  4. import java.sql.CallableStatement;
  5. import java.sql.Connection;
  6. import java.sql.DatabaseMetaData;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.ResultSetMetaData;
  10. import java.sql.SQLException;
  11. import java.sql.Statement;
  12. import java.util.Scanner;
  13.  
  14. import javax.sql.RowSet;
  15.  
  16. import java.util.Properties;
  17.  
  18. import oracle.jdbc.pool.OracleDataSource; //sterownik bazy danych Oracle
  19.  
  20. public class TestConnection {
  21.  
  22.     Connection conn; // obiekt Connection do nawiązania połączenia z bazą danych
  23.  
  24.     public static void main(String[] args) {
  25.  
  26.         TestConnection cwiczenie = new TestConnection(); // zwróć uwagę jak (i w
  27.                                                             // którym miejscu)
  28.                                                             // tworzony jest
  29.                                                             // obiekt klasy
  30.  
  31.         try {
  32.  
  33.             cwiczenie.setConnection(); // otwarcie połączenia z BD
  34. //          cwiczenie.connectionTest(); // test połączenia
  35.             // cwiczenie.newEmployees();
  36.             // cwiczenie.callProcedure();
  37. //          cwiczenie.addEmployee();
  38.             // cwiczenie.showProjects();
  39.              cwiczenie.showManagers();
  40.             // cwiczenie.preparedStatement(); // wykonanie zapytania
  41.             // cwiczenie.transactionShowcase(); // obsługa transakcji
  42.             cwiczenie.closeConnection();// zamknięcie połączenia z BD
  43.  
  44.         } catch (SQLException eSQL) {
  45.             System.out.println("Blad przetwarzania SQL");
  46.             return;
  47.         } catch (IOException eIO) // Błąd obsługi pliku zawierającego parametry
  48.                                     // połączenia
  49.         {
  50.             System.out.println("Nie można otworzyć pliku z parametrami połączenia ");
  51.             return;
  52.         }
  53.     }
  54.  
  55.     private void showManagers() {
  56.         try {
  57.             PreparedStatement preparedStatement = conn
  58.                     .prepareStatement("SELECT employees.*, managers.promotion_date, managers.bonus"
  59.                             + " FROM employees, managers WHERE employees.employee_id = managers.employee_id");
  60.  
  61.             // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
  62.             ResultSet rs = preparedStatement.executeQuery();
  63.            
  64.  
  65.             // Iteracyjnie wypisz rezultaty
  66.             System.out.println("---------------------------------");
  67.             while (rs.next()) {
  68.                 ResultSetMetaData md = rs.getMetaData();
  69.                 int colCount = md.getColumnCount();
  70.                 String result = "";
  71.                 for (int i = 1; i <= colCount; i++) {
  72.                     result += rs.getString(i) + "\t";
  73.                 }
  74.                 System.out.println(result);
  75.             }
  76.             System.out.println("---------------------------------");
  77.  
  78.             // Zamknij ResultSet oraz PreparedStatement
  79.             rs.close();
  80.             preparedStatement.close();
  81.         } catch (SQLException e) {
  82.             System.err.println(e.getMessage());
  83.         }
  84.     }
  85.  
  86.     private void showProjects() throws SQLException {
  87.         try {
  88.             PreparedStatement preparedStatement = conn
  89.                     .prepareStatement("SELECT projects.project_id, projects.project_name, teams.team_name"
  90.                             + " FROM projects, teams WHERE projects.team_id = teams.team_id");
  91.  
  92.             // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
  93.             ResultSet rs = preparedStatement.executeQuery();
  94.  
  95.             // Iteracyjnie wypisz rezultaty
  96.             System.out.println("---------------------------------");
  97.             while (rs.next()) {
  98.                 System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
  99.             }
  100.             System.out.println("---------------------------------");
  101.  
  102.             // Zamknij ResultSet oraz PreparedStatement
  103.             rs.close();
  104.             preparedStatement.close();
  105.         } catch (SQLException e) {
  106.             System.err.println(e.getMessage());
  107.         }
  108.     }
  109.  
  110.     private void callProcedure() throws SQLException {
  111.         try {
  112.             System.out.println(
  113.                     "Proszę podać nazwę zleceniodawcy, nazwę projektu oraz zespół, \nktóry będzie się zajmował tym projektem");
  114.             CallableStatement stm = conn.prepareCall("{CALL confirm_project(?,?,?)}");
  115.             Scanner scanner = new Scanner(System.in);
  116.             stm.setString(1, scanner.nextLine());
  117.             stm.setString(2, scanner.nextLine());
  118.             stm.setString(3, scanner.nextLine());
  119.             stm.executeUpdate();
  120.             stm.close();
  121.             scanner.close();
  122.         } catch (SQLException e) {
  123.             System.err.println(e.getMessage());
  124.         }
  125.     }
  126.  
  127.     private void addEmployee() throws SQLException {
  128.         System.out.println("Ilu pracowników chcesz dodać?");
  129.  
  130.         Scanner scanner = new Scanner(System.in);
  131.         int n = scanner.nextInt();
  132.         scanner.close();
  133.  
  134.         for (int i = 0; i < n; i++) {
  135.             try {
  136.                 System.out
  137.                         .println("" + "Podaj PESEL, Plec(m-male/f-female), Imie, Nazwisko, pensje, adres pracownika:");
  138.                 CallableStatement stm2 = conn.prepareCall("{CALL add_employee(?,?,?,?,?,?)}");
  139.  
  140.                 Scanner input = new Scanner(System.in);
  141.                 if (input.hasNextLine()) { // ISSUE HERE TODO!
  142.                     stm2.setInt(1, Integer.parseInt(input.nextLine()));
  143.                     stm2.setString(2, input.nextLine());
  144.                     stm2.setString(3, input.nextLine());
  145.                     stm2.setString(4, input.nextLine());
  146.                     stm2.setInt(5, Integer.parseInt(input.nextLine()));
  147.                     stm2.setString(6, input.nextLine());
  148.                 }
  149.  
  150.                 stm2.close();
  151.                 input.close();
  152.             } catch (SQLException e) {
  153.                 System.err.println("Coś poszło nie tak: " + e.getMessage());
  154.             }
  155.         }
  156.  
  157.     }
  158.  
  159.     /*
  160.      * Ze względu na istnienie tabeli wiążącej imiona z płcią, ta metoda będzie
  161.      * działała jedynie przy dodawaniu pracowników o imionach już dodanych do
  162.      * tabeli
  163.      */
  164.     private void newEmployees() throws SQLException {
  165.         System.out.println("Ilu pracowników chcesz dodać?");
  166.  
  167.         Scanner scanner = new Scanner(System.in);
  168.         int n = scanner.nextInt();
  169.         scanner.close();
  170.  
  171.         for (int i = 0; i < n; i++) {
  172.             try {
  173.                 PreparedStatement preparedStatement = conn
  174.                         .prepareStatement("Insert into employees values (7, ?, ?, ?, ?, ?)");
  175.  
  176.                 // Wczytaj parametr Imie
  177.                 System.out.println("Podaj PESEL, Imie, Nazwisko, pensje, adres pracownika:");
  178.                 Scanner in = new Scanner(System.in);
  179.                 // Ustaw wczytaną wartość
  180.                 preparedStatement.setString(1, in.nextLine());
  181.                 preparedStatement.setString(2, in.nextLine());
  182.                 preparedStatement.setString(3, in.nextLine());
  183.                 preparedStatement.setString(4, in.nextLine());
  184.                 preparedStatement.setString(5, in.nextLine());
  185.  
  186.                 // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
  187.                 ResultSet rs = preparedStatement.executeQuery();
  188.  
  189.                 in.close();
  190.                 rs.close();
  191.             } catch (SQLException e) {
  192.                 System.err.println("Coś poszło nie tak: " + e.getMessage());
  193.             }
  194.         }
  195.  
  196.     }
  197.  
  198.     public void setConnection() throws SQLException, IOException // metoda
  199.                                                                     // nawiązuje
  200.                                                                     // połączenie
  201.     {
  202.  
  203.         Properties prop = new Properties(); // nowy obiekt typu Properites
  204.                                             // przechowujący parametry
  205.                                             // połączenia do BD
  206.  
  207.         FileInputStream in = new FileInputStream("connection.parameters.txt"); // w
  208.                                                                                 // pliku
  209.                                                                                 // znajdują
  210.                                                                                 // się
  211.                                                                                 // parametry
  212.                                                                                 // połączenia
  213.  
  214.         prop.load(in); // załadowanie danych z pliku
  215.         in.close(); // zamknięcie pliku
  216.  
  217.         String url = prop.getProperty("jdbc.url"); // pobieramy parametry
  218.                                                     // połączenia
  219.         String username = prop.getProperty("jdbc.username");
  220.         String password = prop.getProperty("jdbc.password");
  221.         String port = prop.getProperty("jdbc.port");
  222.         String SID = prop.getProperty("jdbc.SID");
  223.  
  224.         OracleDataSource ods; // nowe źródło danych
  225.         ods = new OracleDataSource();
  226.         ods.setURL("jdbc:oracle:thin:" + username + "/" + password + "@" + url + ":" + port + ":" + SID); // ustawiamy
  227.                                                                                                             // parametry
  228.                                                                                                             // połączenia
  229.  
  230.         conn = ods.getConnection(); // nawiązujemy połączenie z BD
  231.  
  232.         DatabaseMetaData meta = conn.getMetaData();
  233.         System.out.println(
  234.                 "Połaczenie do bazy danych poprawnie nawiązane. Wersja sterownika BD:" + meta.getDriverVersion());
  235.     }
  236.  
  237.     public void closeConnection() throws SQLException // zamknięcie połączenia
  238.     {
  239.         conn.close(); // ponownie wykorzystanie conn
  240.         System.out.println("Połączenie z bazą zamknięte poprawnie."); // wypisujemy
  241.                                                                         // tekst
  242.     }
  243.  
  244.     public void connectionTest() throws SQLException // wykonanie prostego
  245.                                                         // zapytania SQL
  246.     {
  247.         System.out.println("Proste zapytanie SQL:"); // wypisujemy tekst na
  248.                                                         // ekranie konsoli
  249.  
  250.         // tworzymy nowy obiekt Statement przechowujący polecenie SQL
  251.         Statement stat = conn.createStatement();
  252.  
  253.         // wydajemy zapytanie oraz zapisujemy rezultat w obiekcie typu ResultSet
  254.         ResultSet rs = stat.executeQuery("Select first_name, last_name From employees");
  255.  
  256.         System.out.println("---------------------------------");
  257.         while (rs.next()) {
  258.             System.out.println(rs.getString(1) + " " + rs.getString(2)); // iteracyjnie
  259.                                                                             // odczytujemy
  260.                                                                             // rezultaty
  261.                                                                             // zapytania
  262.         }
  263.         System.out.println("---------------------------------");
  264.  
  265.         rs.close(); // zamykamy obiekt ResultSet
  266.         stat.close(); // zamykamy obiekt Conn
  267.     }
  268.  
  269.     public void preparedStatement() throws SQLException {
  270.         System.out.println("Prepared statement:");
  271.  
  272.         // Zwróć uwagę na znak zapytania na końcu linii, w to miejsce zostanie
  273.         // wstawiona wartość wczytana z klawiatury
  274.         PreparedStatement preparedStatement = conn
  275.                 .prepareStatement("SELECT first_name, last_name FROM employees WHERE first_name LIKE ?");
  276.  
  277.         // Wczytaj parametr Imie
  278.         System.out.println("Podaj Imie pracownika:");
  279.         Scanner in = new Scanner(System.in);
  280.  
  281.         // Ustaw wczytaną wartość
  282.         preparedStatement.setString(1, in.nextLine());
  283.  
  284.         // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
  285.         ResultSet rs = preparedStatement.executeQuery();
  286.  
  287.         // Iteracyjnie wypisz rezultaty
  288.         System.out.println("---------------------------------");
  289.         while (rs.next()) {
  290.             System.out.println(rs.getString(1) + " " + rs.getString(2));
  291.         }
  292.         System.out.println("---------------------------------");
  293.  
  294.         // Zamknij ResultSet oraz PreparedStatement
  295.         in.close();
  296.         rs.close();
  297.         preparedStatement.close();
  298.     }
  299.  
  300.     public void transactionShowcase() // obsługa transakcji
  301.     {
  302.         System.out.println("Obsługa transakcji");
  303.         try {
  304.             conn.setAutoCommit(false);
  305.             Statement stat = conn.createStatement();
  306.             int rsInt = stat.executeUpdate("UPDATE Employees SET Salary = 4500 WHERE last_name LIKE 'Nowak'");
  307.             System.out.println("Liczba uaktualnionych wierszy: " + rsInt);
  308.  
  309.             rsInt = stat.executeUpdate("UPDATE Employees SET Salary = 4500 WHERE last_name LIKE 'Bidu%'");
  310.             System.out.println("Liczba uaktualnionych wierszy: " + rsInt);
  311.  
  312.             // Jeśli nie było błędu:
  313.             conn.commit();
  314.             stat.close();
  315.  
  316.         } catch (SQLException eSQL) // coś poszło nie tak
  317.         {
  318.             try {
  319.                 System.out.println("Transakcja wycofana");
  320.                 conn.rollback(); // wycofaj transakcję
  321.             } catch (SQLException e2SQL) {
  322.                 System.out.println("Blad przetwarzania SQL"); // inny błąd SQL
  323.             }
  324.         }
  325.     }
  326. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement