Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.sql.*;
- import oracle.jdbc.*;
- /**
- * Created by valdemar on 21.09.16.
- * Вариант задания:
- * 2. Указать импорт группы используемых классов и интерфейсов.
- * 1. DriverManager.registerDriver
- * 8. DriverManager.getConnection(String url, String user, String pass)
- * 9. CallableStatement, execute()
- * 5. TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE, ResultSetMetaData
- */
- public class lab4_s226362 {
- static Connection conn = null;
- static final String dbUser = "s226362";
- static final String dbPassword = "******";
- public static void main(String[] args) {
- try {
- //Register driver
- DriverManager.registerDriver(new OracleDriver());
- //Connection
- conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orbis", dbUser, dbPassword);
- //Create table
- createTable();
- //Create stored procedure
- createFunction();
- //Fill table using CallableStatement
- fillTable();
- //Use ResultSetMetaData to browse table
- browseTable();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- private static void browseTable() throws SQLException {
- Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
- ResultSet rs = st.executeQuery("SELECT название, население, находится_в_россии FROM ГОРОДА");
- ResultSetMetaData rsm = rs.getMetaData();
- //Method returning int
- int columnCount = rsm.getColumnCount();
- //Method returning String
- String thirdColLabel = rsm.getColumnLabel(3);
- //Method returning boolean
- boolean isRO = rsm.isReadOnly(3);
- System.out.println("ResultSetMetaData: column count in города = " + columnCount
- + "; third column label = " + thirdColLabel
- + "; is third column read only = " + isRO);
- System.out.println("Table content:");
- while (rs.next()) {
- System.out.println("Row: " + rs.getString(1) + " " + rs.getInt(2) + " " + rs.getBoolean(3));
- }
- }
- private static void createTable() throws SQLException {
- Statement st = conn.createStatement();
- String sql = "CREATE TABLE города " +
- "(название VARCHAR(100), " +
- "население NUMBER(9), " +
- "находится_в_россии NUMBER(1) NOT NULL CHECK(находится_в_россии IN(0, 1)))";
- try {
- st.executeUpdate("DROP TABLE города CASCADE CONSTRAINTS");
- } catch (SQLException se) {
- //Игнорировать ошибку удаления таблицы
- if (se.getErrorCode() != 942) {
- String msg = se.getMessage();
- System.out.println("Ошибка при удалении таблицы: " + msg);
- }
- }
- //Создание таблицы операторы_связи
- if (st.executeUpdate(sql) == 0) {
- System.out.println("Таблица города создана...");
- }
- }
- private static void fillTable() throws SQLException {
- String sql = "{call add_table_entry(?,?,?)}";
- CallableStatement cst = conn.prepareCall(sql);
- setAndExecuteCallableStatement(cst, "Санкт-Петербург", 4848742, true);
- setAndExecuteCallableStatement(cst, "Москва", 11514330, true);
- setAndExecuteCallableStatement(cst, "London", 8674000, false);
- setAndExecuteCallableStatement(cst, "New-York", 8406000, false);
- System.out.println("Таблица заполнена...");
- cst.close();
- }
- private static void setAndExecuteCallableStatement(CallableStatement cst,
- String name,
- int peopleCount,
- boolean inRussia) throws SQLException {
- cst.setString(1, name);
- cst.setInt(2, peopleCount);
- cst.setBoolean(3, inRussia);
- cst.execute();
- }
- private static void createFunction() throws SQLException {
- Statement st = conn.createStatement();
- String sql = "CREATE PROCEDURE add_table_entry "
- + "(название IN VARCHAR, население IN NUMBER, находится_в_россии NUMBER) AS "
- + "BEGIN "
- + "INSERT INTO города(название, население, находится_в_россии) "
- + "VALUES(название, население, находится_в_россии);"
- + "COMMIT;"
- + "END;";
- try {
- st.executeUpdate("DROP PROCEDURE add_table_entry");
- } catch (SQLException se) {
- //Игнорировать ошибку удаления процедуры
- if (se.getErrorCode() != 4043) {
- String msg = se.getMessage();
- System.out.println("Ошибка при удалении процедуры: " + msg);
- }
- }
- //Создание процедуры
- if (st.executeUpdate(sql) == 0) {
- System.out.println("Процедура add_table_entry создана...");
- }
- st.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement