SHARE
TWEET

Untitled

a guest Sep 24th, 2016 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.sql.*;
  2.  
  3. import oracle.jdbc.*;
  4.  
  5. /**
  6.  * Created by valdemar on 21.09.16.
  7.  * Вариант задания:
  8.  * 2. Указать импорт группы используемых классов и интерфейсов.
  9.  * 1. DriverManager.registerDriver
  10.  * 8. DriverManager.getConnection(String url, String user, String pass)
  11.  * 9. CallableStatement, execute()
  12.  * 5. TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE, ResultSetMetaData
  13.  */
  14. public class lab4_s226362 {
  15.     static Connection conn = null;
  16.     static final String dbUser = "s226362";
  17.     static final String dbPassword = "******";
  18.  
  19.     public static void main(String[] args) {
  20.         try {
  21.             //Register driver
  22.             DriverManager.registerDriver(new OracleDriver());
  23.             //Connection
  24.             conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orbis", dbUser, dbPassword);
  25.             //Create table
  26.             createTable();
  27.             //Create stored procedure
  28.             createFunction();
  29.             //Fill table using CallableStatement
  30.             fillTable();
  31.             //Use ResultSetMetaData to browse table
  32.             browseTable();
  33.         } catch (SQLException e) {
  34.             e.printStackTrace();
  35.         } finally {
  36.             if (conn != null) {
  37.                 try {
  38.                     conn.close();
  39.                 } catch (SQLException e) {
  40.                     e.printStackTrace();
  41.                 }
  42.             }
  43.         }
  44.     }
  45.  
  46.     private static void browseTable() throws SQLException {
  47.         Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
  48.         ResultSet rs = st.executeQuery("SELECT название, население, находится_в_россии FROM ГОРОДА");
  49.         ResultSetMetaData rsm = rs.getMetaData();
  50.  
  51.         //Method returning int
  52.         int columnCount = rsm.getColumnCount();
  53.         //Method returning String
  54.         String thirdColLabel = rsm.getColumnLabel(3);
  55.         //Method returning boolean
  56.         boolean isRO = rsm.isReadOnly(3);
  57.  
  58.         System.out.println("ResultSetMetaData: column count in города = " + columnCount
  59.                 + "; third column label = " + thirdColLabel
  60.                 + "; is third column read only = " + isRO);
  61.  
  62.         System.out.println("Table content:");
  63.         while (rs.next()) {
  64.             System.out.println("Row: " + rs.getString(1) + " " + rs.getInt(2) + " " + rs.getBoolean(3));
  65.         }
  66.     }
  67.  
  68.     private static void createTable() throws SQLException {
  69.         Statement st = conn.createStatement();
  70.         String sql = "CREATE TABLE города " +
  71.                 "(название VARCHAR(100), " +
  72.                 "население NUMBER(9), " +
  73.                 "находится_в_россии NUMBER(1) NOT NULL CHECK(находится_в_россии IN(0, 1)))";
  74.         try {
  75.             st.executeUpdate("DROP TABLE города CASCADE CONSTRAINTS");
  76.         } catch (SQLException se) {
  77.             //Игнорировать ошибку удаления таблицы
  78.             if (se.getErrorCode() != 942) {
  79.                 String msg = se.getMessage();
  80.                 System.out.println("Ошибка при удалении таблицы: " + msg);
  81.             }
  82.         }
  83.         //Создание таблицы операторы_связи
  84.         if (st.executeUpdate(sql) == 0) {
  85.             System.out.println("Таблица города создана...");
  86.         }
  87.     }
  88.  
  89.     private static void fillTable() throws SQLException {
  90.         String sql = "{call add_table_entry(?,?,?)}";
  91.         CallableStatement cst = conn.prepareCall(sql);
  92.  
  93.         setAndExecuteCallableStatement(cst, "Санкт-Петербург", 4848742, true);
  94.         setAndExecuteCallableStatement(cst, "Москва", 11514330, true);
  95.         setAndExecuteCallableStatement(cst, "London", 8674000, false);
  96.         setAndExecuteCallableStatement(cst, "New-York", 8406000, false);
  97.  
  98.         System.out.println("Таблица заполнена...");
  99.         cst.close();
  100.     }
  101.  
  102.     private static void setAndExecuteCallableStatement(CallableStatement cst,
  103.                                                        String name,
  104.                                                        int peopleCount,
  105.                                                        boolean inRussia) throws SQLException {
  106.         cst.setString(1, name);
  107.         cst.setInt(2, peopleCount);
  108.         cst.setBoolean(3, inRussia);
  109.         cst.execute();
  110.     }
  111.  
  112.     private static void createFunction() throws SQLException {
  113.         Statement st = conn.createStatement();
  114.         String sql = "CREATE PROCEDURE add_table_entry "
  115.                 + "(название IN VARCHAR, население IN NUMBER, находится_в_россии NUMBER) AS "
  116.                 + "BEGIN "
  117.                 + "INSERT INTO города(название, население, находится_в_россии) "
  118.                 + "VALUES(название, население, находится_в_россии);"
  119.                 + "COMMIT;"
  120.                 + "END;";
  121.         try {
  122.             st.executeUpdate("DROP PROCEDURE add_table_entry");
  123.         } catch (SQLException se) {
  124.             //Игнорировать ошибку удаления процедуры
  125.             if (se.getErrorCode() != 4043) {
  126.                 String msg = se.getMessage();
  127.                 System.out.println("Ошибка при удалении процедуры: " + msg);
  128.             }
  129.         }
  130.         //Создание процедуры
  131.         if (st.executeUpdate(sql) == 0) {
  132.             System.out.println("Процедура add_table_entry создана...");
  133.         }
  134.         st.close();
  135.     }
  136. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top