Advertisement
Guest User

Untitled

a guest
Sep 24th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.84 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement