Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //pakiety języka JAVA potrzebne do nawiązania (i obsługi) połączenia z BD
- import java.io.*;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.DatabaseMetaData;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Scanner;
- import javax.sql.RowSet;
- import java.util.Properties;
- import oracle.jdbc.pool.OracleDataSource; //sterownik bazy danych Oracle
- public class TestConnection {
- Connection conn; // obiekt Connection do nawiązania połączenia z bazą danych
- public static void main(String[] args) {
- TestConnection cwiczenie = new TestConnection(); // zwróć uwagę jak (i w
- // którym miejscu)
- // tworzony jest
- // obiekt klasy
- try {
- cwiczenie.setConnection(); // otwarcie połączenia z BD
- // cwiczenie.connectionTest(); // test połączenia
- // cwiczenie.newEmployees();
- // cwiczenie.callProcedure();
- // cwiczenie.addEmployee();
- // cwiczenie.showProjects();
- cwiczenie.showManagers();
- // cwiczenie.preparedStatement(); // wykonanie zapytania
- // cwiczenie.transactionShowcase(); // obsługa transakcji
- cwiczenie.closeConnection();// zamknięcie połączenia z BD
- } catch (SQLException eSQL) {
- System.out.println("Blad przetwarzania SQL");
- return;
- } catch (IOException eIO) // Błąd obsługi pliku zawierającego parametry
- // połączenia
- {
- System.out.println("Nie można otworzyć pliku z parametrami połączenia ");
- return;
- }
- }
- private void showManagers() {
- try {
- PreparedStatement preparedStatement = conn
- .prepareStatement("SELECT employees.*, managers.promotion_date, managers.bonus"
- + " FROM employees, managers WHERE employees.employee_id = managers.employee_id");
- // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
- ResultSet rs = preparedStatement.executeQuery();
- // Iteracyjnie wypisz rezultaty
- System.out.println("---------------------------------");
- while (rs.next()) {
- ResultSetMetaData md = rs.getMetaData();
- int colCount = md.getColumnCount();
- String result = "";
- for (int i = 1; i <= colCount; i++) {
- result += rs.getString(i) + "\t";
- }
- System.out.println(result);
- }
- System.out.println("---------------------------------");
- // Zamknij ResultSet oraz PreparedStatement
- rs.close();
- preparedStatement.close();
- } catch (SQLException e) {
- System.err.println(e.getMessage());
- }
- }
- private void showProjects() throws SQLException {
- try {
- PreparedStatement preparedStatement = conn
- .prepareStatement("SELECT projects.project_id, projects.project_name, teams.team_name"
- + " FROM projects, teams WHERE projects.team_id = teams.team_id");
- // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
- ResultSet rs = preparedStatement.executeQuery();
- // Iteracyjnie wypisz rezultaty
- System.out.println("---------------------------------");
- while (rs.next()) {
- System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
- }
- System.out.println("---------------------------------");
- // Zamknij ResultSet oraz PreparedStatement
- rs.close();
- preparedStatement.close();
- } catch (SQLException e) {
- System.err.println(e.getMessage());
- }
- }
- private void callProcedure() throws SQLException {
- try {
- System.out.println(
- "Proszę podać nazwę zleceniodawcy, nazwę projektu oraz zespół, \nktóry będzie się zajmował tym projektem");
- CallableStatement stm = conn.prepareCall("{CALL confirm_project(?,?,?)}");
- Scanner scanner = new Scanner(System.in);
- stm.setString(1, scanner.nextLine());
- stm.setString(2, scanner.nextLine());
- stm.setString(3, scanner.nextLine());
- stm.executeUpdate();
- stm.close();
- scanner.close();
- } catch (SQLException e) {
- System.err.println(e.getMessage());
- }
- }
- private void addEmployee() throws SQLException {
- System.out.println("Ilu pracowników chcesz dodać?");
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- scanner.close();
- for (int i = 0; i < n; i++) {
- try {
- System.out
- .println("" + "Podaj PESEL, Plec(m-male/f-female), Imie, Nazwisko, pensje, adres pracownika:");
- CallableStatement stm2 = conn.prepareCall("{CALL add_employee(?,?,?,?,?,?)}");
- Scanner input = new Scanner(System.in);
- if (input.hasNextLine()) { // ISSUE HERE TODO!
- stm2.setInt(1, Integer.parseInt(input.nextLine()));
- stm2.setString(2, input.nextLine());
- stm2.setString(3, input.nextLine());
- stm2.setString(4, input.nextLine());
- stm2.setInt(5, Integer.parseInt(input.nextLine()));
- stm2.setString(6, input.nextLine());
- }
- stm2.close();
- input.close();
- } catch (SQLException e) {
- System.err.println("Coś poszło nie tak: " + e.getMessage());
- }
- }
- }
- /*
- * Ze względu na istnienie tabeli wiążącej imiona z płcią, ta metoda będzie
- * działała jedynie przy dodawaniu pracowników o imionach już dodanych do
- * tabeli
- */
- private void newEmployees() throws SQLException {
- System.out.println("Ilu pracowników chcesz dodać?");
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- scanner.close();
- for (int i = 0; i < n; i++) {
- try {
- PreparedStatement preparedStatement = conn
- .prepareStatement("Insert into employees values (7, ?, ?, ?, ?, ?)");
- // Wczytaj parametr Imie
- System.out.println("Podaj PESEL, Imie, Nazwisko, pensje, adres pracownika:");
- Scanner in = new Scanner(System.in);
- // Ustaw wczytaną wartość
- preparedStatement.setString(1, in.nextLine());
- preparedStatement.setString(2, in.nextLine());
- preparedStatement.setString(3, in.nextLine());
- preparedStatement.setString(4, in.nextLine());
- preparedStatement.setString(5, in.nextLine());
- // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
- ResultSet rs = preparedStatement.executeQuery();
- in.close();
- rs.close();
- } catch (SQLException e) {
- System.err.println("Coś poszło nie tak: " + e.getMessage());
- }
- }
- }
- public void setConnection() throws SQLException, IOException // metoda
- // nawiązuje
- // połączenie
- {
- Properties prop = new Properties(); // nowy obiekt typu Properites
- // przechowujący parametry
- // połączenia do BD
- FileInputStream in = new FileInputStream("connection.parameters.txt"); // w
- // pliku
- // znajdują
- // się
- // parametry
- // połączenia
- prop.load(in); // załadowanie danych z pliku
- in.close(); // zamknięcie pliku
- String url = prop.getProperty("jdbc.url"); // pobieramy parametry
- // połączenia
- String username = prop.getProperty("jdbc.username");
- String password = prop.getProperty("jdbc.password");
- String port = prop.getProperty("jdbc.port");
- String SID = prop.getProperty("jdbc.SID");
- OracleDataSource ods; // nowe źródło danych
- ods = new OracleDataSource();
- ods.setURL("jdbc:oracle:thin:" + username + "/" + password + "@" + url + ":" + port + ":" + SID); // ustawiamy
- // parametry
- // połączenia
- conn = ods.getConnection(); // nawiązujemy połączenie z BD
- DatabaseMetaData meta = conn.getMetaData();
- System.out.println(
- "Połaczenie do bazy danych poprawnie nawiązane. Wersja sterownika BD:" + meta.getDriverVersion());
- }
- public void closeConnection() throws SQLException // zamknięcie połączenia
- {
- conn.close(); // ponownie wykorzystanie conn
- System.out.println("Połączenie z bazą zamknięte poprawnie."); // wypisujemy
- // tekst
- }
- public void connectionTest() throws SQLException // wykonanie prostego
- // zapytania SQL
- {
- System.out.println("Proste zapytanie SQL:"); // wypisujemy tekst na
- // ekranie konsoli
- // tworzymy nowy obiekt Statement przechowujący polecenie SQL
- Statement stat = conn.createStatement();
- // wydajemy zapytanie oraz zapisujemy rezultat w obiekcie typu ResultSet
- ResultSet rs = stat.executeQuery("Select first_name, last_name From employees");
- System.out.println("---------------------------------");
- while (rs.next()) {
- System.out.println(rs.getString(1) + " " + rs.getString(2)); // iteracyjnie
- // odczytujemy
- // rezultaty
- // zapytania
- }
- System.out.println("---------------------------------");
- rs.close(); // zamykamy obiekt ResultSet
- stat.close(); // zamykamy obiekt Conn
- }
- public void preparedStatement() throws SQLException {
- System.out.println("Prepared statement:");
- // Zwróć uwagę na znak zapytania na końcu linii, w to miejsce zostanie
- // wstawiona wartość wczytana z klawiatury
- PreparedStatement preparedStatement = conn
- .prepareStatement("SELECT first_name, last_name FROM employees WHERE first_name LIKE ?");
- // Wczytaj parametr Imie
- System.out.println("Podaj Imie pracownika:");
- Scanner in = new Scanner(System.in);
- // Ustaw wczytaną wartość
- preparedStatement.setString(1, in.nextLine());
- // Wykonaj zapytanie oraz zapamiętaj zbiór rezultatów
- ResultSet rs = preparedStatement.executeQuery();
- // Iteracyjnie wypisz rezultaty
- System.out.println("---------------------------------");
- while (rs.next()) {
- System.out.println(rs.getString(1) + " " + rs.getString(2));
- }
- System.out.println("---------------------------------");
- // Zamknij ResultSet oraz PreparedStatement
- in.close();
- rs.close();
- preparedStatement.close();
- }
- public void transactionShowcase() // obsługa transakcji
- {
- System.out.println("Obsługa transakcji");
- try {
- conn.setAutoCommit(false);
- Statement stat = conn.createStatement();
- int rsInt = stat.executeUpdate("UPDATE Employees SET Salary = 4500 WHERE last_name LIKE 'Nowak'");
- System.out.println("Liczba uaktualnionych wierszy: " + rsInt);
- rsInt = stat.executeUpdate("UPDATE Employees SET Salary = 4500 WHERE last_name LIKE 'Bidu%'");
- System.out.println("Liczba uaktualnionych wierszy: " + rsInt);
- // Jeśli nie było błędu:
- conn.commit();
- stat.close();
- } catch (SQLException eSQL) // coś poszło nie tak
- {
- try {
- System.out.println("Transakcja wycofana");
- conn.rollback(); // wycofaj transakcję
- } catch (SQLException e2SQL) {
- System.out.println("Blad przetwarzania SQL"); // inny błąd SQL
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement