随分前にOracleの検証をJunit使ってテストした時の垂れ流しコードのメモを一応貼っとこう
もしかしたら何かに使う可能性があるかもしれないから。それにしてもだなー。その時の自分から今の自分に謝りたいと思います。やっつけなコードで大変申し訳ございません。以後気をつけたいと思います。
package jp.co.suda.oracle; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.sql.Array; import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import jp.co.suda.oracle.Exception.Runtime.OracleAddUserException; import oracle.jdbc.OracleTypes; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class OracleTest1 { private static Connection conn; private static Statement nowStatement; private static PreparedStatement nowPstatement; private static CallableStatement cs; private static ResultSet result; private static String sql; private static int testno = 1; private static String connectionUser = "suda"; private static String connectionPass = "hogesuda"; private static String targetUser = "odu"; private static String targetUserPass = "hogeodu"; /** * * ドライバの読み込み コネクションの取得 * * @throws ClassNotFoundException * @throws SQLException */ @BeforeClass public static void setup() throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:sudaorcl", connectionUser, connectionPass); nowStatement = conn.createStatement(); System.out .println("ユーザ" + conn.getMetaData().getUserName() + "で接続します。"); System.out.println("スキーマ" + targetUser + "に対してオブジェクト操作します。"); System.out.println(""); } @Before public void setUpMethod() { System.out.println(""); System.out.println("==================================== " + testno + " つめのテストを開始します ===================================="); } @Test public void testAll() throws SQLException { testA(); testB(); testC(); } // @Test public void deleteAll() throws SQLException { deleteA(); deleteB(); deleteC(); } // @Test public void testA() throws SQLException { try { createTable(); createTable2(); insertData(); selectData(); deleteData(); alterTable(); System.out.println("\n\n\n"); createView(); selectView(); System.out.println("\n\n\n"); createSequence(); selectSequence(); alterSequence(); System.out.println("\n\n\n"); createIndex(); alterIndex(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void testB() throws SQLException { try { createProcedure(); execProcedure(); System.out.println("\n\n\n"); createFunction(); execFunction(); System.out.println("\n\n\n"); createType(); System.out.println("\n\n\n"); createPackage(); createPackageBody(); execPackage(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void testC() throws SQLException { try { createProcedureByJob(); createJob(); executeJob(); System.out.println("\n\n\n"); createLobTable(); insertBlob(); selectBlob(); System.out.println("\n\n\n"); loadJava(); createJavaFunction(); execJavaFunction(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void deleteA() throws SQLException { try { dropIndex(); System.out.println("\n\n\n"); dropTable(); System.out.println("\n\n\n"); dropView(); System.out.println("\n\n\n"); dropSequence(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void deleteB() throws SQLException { try { /* * ユーザ作成(); 権限付与(); */ dropProcedure(); System.out.println("\n\n\n"); dropFunction(); System.out.println("\n\n\n"); dropPackage(); System.out.println("\n\n\n"); dropType(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void deleteC() throws SQLException { try { dropProcedureByJob(); System.out.println("\n\n\n"); dropJob(); System.out.println("\n\n\n"); dropLobTable(); System.out.println("\n\n\n"); dropJavaFunction(); System.out.println("\n\n\n"); dropJava(); System.out.println("\n\n\n"); } catch (Exception e) { OracleAddUserException oracleAddUserException = new OracleAddUserException("testAでエラーが発生しました!", e); throw oracleAddUserException; } } // @Test public void createUser() throws SQLException { System.out.println("ユーザを作成します。"); sql = "CREATE USER " + targetUser + " PROFILE DEFAULT " + "IDENTIFIED BY " + targetUserPass + " DEFAULT TABLESPACE USERS " + "TEMPORARY TABLESPACE TEMP " + "ACCOUNT UNLOCK"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ユーザ" + targetUser + "を作成しました"); } // @Test public void grantTo() throws SQLException { System.out.println("権限を付与します。"); sql = "GRANT DBA TO " + targetUser; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ユーザ" + targetUser + "にDBA権限を付与しました"); } // @Test public void RevokeTo() throws SQLException { System.out.println("権限を剥奪します。"); sql = "REVOKE DBA TO " + targetUser; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ユーザ" + targetUser + "のDBA権限を剥奪しました"); } // @Test public void dropUser() throws SQLException { System.out.println("ユーザ削除します"); sql = "DROP USER " + targetUser + " CASCADE"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ユーザ" + targetUser + "を削除しました"); } // @Test public void createTable() throws SQLException { System.out.println("テーブルを作成します"); sql = "CREATE TABLE " + targetUser + "." + "EMPLOYEETABLE ( " + "EmployeeID INTEGER NOT NULL PRIMARY KEY, " + "Name CHAR(20), " + "GroupID INTEGER NOT NULL )"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルを作成しました"); } // @Test public void createTable2() throws SQLException { System.out.println("テーブルを作成します2"); sql = "CREATE TABLE " + targetUser + "." + "GroupTable ( " + "GroupID INTEGER NOT NULL PRIMARY KEY, " + "GroupName CHAR(20))"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルを作成しました2"); } // @Test public void insertData() throws SQLException { System.out.println("テーブルデータを挿入します"); sql = "INSERT INTO " + targetUser + "." + "EMPLOYEETABLE VALUES (42136, '小津安二郎', 3)"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); sql = "INSERT INTO " + targetUser + "." + "EMPLOYEETABLE VALUES (77777, 'デビッドフィンチャー', 2)"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); sql = "INSERT INTO " + targetUser + "." + "GROUPTABLE VALUES (2, '監督')"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルデータを挿入しました"); } // @Test public void selectData() throws SQLException { System.out.println("テーブルデータを参照します"); sql = "select * from " + targetUser + "." + "EMPLOYEETABLE"; result = nowStatement.executeQuery(sql); while (result.next()) { String string = result.getString("name"); System.out.println("selectデータ :→→→→→: " + string); } System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルデータを参照しました"); } // @Test public void deleteData() throws SQLException { System.out.println("テーブルデータを削除します"); sql = "DELETE FROM " + targetUser + "." + "EMPLOYEETABLE WHERE NAME = '小津安二郎'"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルデータを削除しました"); } // @Test public void alterTable() throws SQLException { System.out.println("テーブルをALTERします"); sql = "ALTER TABLE " + targetUser + "." + "EMPLOYEETABLE ADD (addcolumn VARCHAR2(20))"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルをALTERしました"); } // @Test public void dropTable() throws SQLException { System.out.println("テーブルを削除します"); sql = "DROP TABLE " + targetUser + "." + "EMPLOYEETABLE purge"; nowStatement.execute(sql); sql = "DROP TABLE " + targetUser + "." + "grouptable purge"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルを削除しました"); } // @Test public void createView() throws SQLException { System.out.println("ビューを作成します"); sql = "CREATE OR REPLACE VIEW " + targetUser + "." + "emp_view AS " + "select " + "e.name , " + "g.groupname " + "from " + targetUser + "." + "EMPLOYEETABLE e , " + targetUser + "." + "grouptable g " + "where e.groupid = g.groupid " + "with read only"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ビューを作成しました"); } // @Test public void selectView() throws SQLException { System.out.println("ビューを参照します"); sql = "select * from " + targetUser + "." + "emp_view"; result = nowStatement.executeQuery(sql); while (result.next()) { System.out.println(result.getString(1)); System.out.println(result.getString(2)); } System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ビューを参照しました"); } // @Test public void dropView() throws SQLException { System.out.println("ビューを削除します"); sql = "DROP VIEW " + targetUser + "." + "emp_view"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ビューを削除しました"); } // @Test public void createSequence() throws SQLException { System.out.println("シーケンスを作成します"); sql = "CREATE SEQUENCE " + targetUser + "." + "exseq " + "START WITH 7 " + "INCREMENT BY 1 " + "MAXVALUE 1000000" + "MINVALUE 0" + "NOCYCLE "; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("シーケンスを作成しました"); } // @Test public void selectSequence() throws SQLException { System.out.println("シーケンスを参照します"); sql = "SELECT " + targetUser + "." + "exseq.nextval FROM dual"; result = nowStatement.executeQuery(sql); while (result.next()) { String str = result.getString(1); System.out.println("シーケンス参照 : → :" + str); } System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("シーケンスを参照しました"); } // @Test public void alterSequence() throws SQLException { System.out.println("シーケンスを変更します"); sql = "ALTER SEQUENCE " + targetUser + "." + "exseq" + " INCREMENT BY 100"; System.out.println(sql); nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("シーケンスを変更しました"); } // @Test public void dropSequence() throws SQLException { System.out.println("シーケンスを削除します"); sql = "DROP SEQUENCE " + targetUser + "." + "exseq"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("シーケンスを削除しました"); } // @Test public void createIndex() throws SQLException { System.out.println("インデックスを作成します"); sql = "CREATE INDEX " + targetUser + "." + "index_id " + "ON " + targetUser + "." + "EMPLOYEETABLE( groupid asc )"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("インデックスを作成しました"); } // @Test public void alterIndex() throws SQLException { System.out.println("インデックスをALTERします"); sql = "ALTER INDEX " + targetUser + "." + "index_id REBUILD ONLINE"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("インデックスをALTERしました"); } // @Test public void dropIndex() throws SQLException { System.out.println("インデックスを削除します"); sql = "DROP INDEX " + targetUser + "." + "index_id"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("インデックスを削除しました"); } // @Test public void createProcedure() throws SQLException { System.out.println("プロシージャを作成します"); sql = "\nCREATE OR REPLACE PROCEDURE " + targetUser + "." + "out_put(input in NUMBER , result out NUMBER) " + "\nIS " + "\nBEGIN" + "\n\tresult := (input + 1);" + "\nEND;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("プロシージャを作成しました"); } // @Test public void execProcedure() throws SQLException { System.out.println("プロシージャを実行します"); // sql = "begin " + targetUser + "." + "out_put(?,?); end;"; sql = "{call " + targetUser + "." + "out_put(?,?)}"; System.out.println("呼び出すストアドプログラム : " + sql); cs = conn.prepareCall(sql); cs.registerOutParameter(2, Types.NUMERIC); cs.setInt(1, 10); cs.executeUpdate(); int str = cs.getInt(2); cs.close(); System.out.println(str); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("プロシージャを実行しました"); } // @Test public void dropProcedure() throws SQLException { System.out.println("プロシージャを削除します"); sql = "DROP PROCEDURE " + targetUser + "." + "out_put"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("プロシージャを削除しました"); } // @Test public void createFunction() throws SQLException { System.out.println("ファンクションを作成します"); sql = "\nCREATE or REPLACE FUNCTION " + targetUser + "." + "get_data_func(in_data in varchar2)" + "\n return varchar2 " + "\nIS" + "\nBEGIN" + "\n return in_data;" + "\nEND get_data_func;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ファンクションを作成しました"); } // @Test public void execFunction() throws SQLException { System.out.println("ファンクションを実行します"); // sql = "begin ? :=" + targetUser + "." + "get_data_func(?); end;"; sql = "{? = call + " + targetUser + "." + "get_data_func(?)}"; CallableStatement cs = conn.prepareCall(sql); cs.registerOutParameter(1, Types.VARCHAR); cs.setString(2, "Hello World!"); cs.executeUpdate(); String data = cs.getString(1); cs.close(); System.out.println("Functionの戻り値 :→:" + data); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ファンクションを実行しました"); } // @Test public void dropFunction() throws SQLException { System.out.println("ファンクションを削除します"); sql = "DROP FUNCTION " + targetUser + "." + "get_data_func"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("ファンクションを削除しました"); } // @Test public void createType() throws SQLException { System.out.println("TYPEを作成します"); sql = "\nCREATE OR REPLACE TYPE " + targetUser + "." + "ARRAY_TYPE" + "\nIS" + "\nTABLE OF VARCHAR2(50);\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("TYPEを作成しました"); } // @Test public void createPackage() throws SQLException { System.out.println("パッケージ仕様部を作成します"); sql = "\nCREATE OR REPLACE PACKAGE " + targetUser + "." + "test_pack" + "\nIS" + "\n arrayType ARRAY_TYPE;" + "\n FUNCTION out_put RETURN ARRAY_TYPE;" + "\nEND;\n"; nowStatement.execute(sql); System.out.println("パッケージを仕様部を作成しました"); } // @Test public void createPackageBody() throws SQLException { System.out.println("パッケージ本体を作成します"); sql = "\nCREATE OR REPLACE PACKAGE BODY " + targetUser + "." + "test_pack" + "\nIS" + "\n FUNCTION out_put RETURN ARRAY_TYPE" + "\n is" + "\n BEGIN" + "\n SELECT NAME BULK COLLECT INTO arrayType from EMPLOYEETABLE;" + "\n RETURN arrayType;" + "\n END;" + "\nEND;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("パッケージを本体を作成しました"); } // @Test public void execPackage() throws SQLException { System.out.println("パッケージを実行します"); sql = "begin ? := " + targetUser + "." + "test_pack.out_put(); end;"; System.out.println("実行パッケージ内FUNCTION : " + sql); CallableStatement cs = conn.prepareCall(sql); cs.registerOutParameter(1, OracleTypes.ARRAY, "ODU" + "." + "ARRAY_TYPE"); cs.executeUpdate(); Array array = cs.getArray(1); String[] str = (String[]) array.getArray(); cs.close(); System.out.println("パッケージ実行結果 : → :" + array); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("パッケージを実行しました"); } // @Test public void dropPackage() throws SQLException { System.out.println("パッケージを削除します"); sql = "DROP PACKAGE " + targetUser + "." + "test_pack"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("パッケージを削除しました"); } // @Test public void dropType() throws SQLException { System.out.println("TYPEを削除します"); sql = "DROP TYPE " + targetUser + "." + "ARRAY_TYPE"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("TYPEを削除しました"); } // @Test public void createProcedureByJob() throws SQLException { System.out.println("JOB用プロシージャを作成します"); sql = "\nCREATE OR REPLACE PROCEDURE " + targetUser + "." + "deleteAllEmp " + "\nIS " + "\nBEGIN" + "\n\tdelete from EMPLOYEETABLE;" + "\nEND;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("JOB用プロシージャを作成しました"); } // @Test public void createJob() throws SQLException { System.out.println("JOBを作成します"); sql = "\nBEGIN" + "\n\tDBMS_SCHEDULER.CREATE_JOB (" + "\n\tjob_name => '" + targetUser + ".myjob'," + "\n\tjob_type => 'STORED_PROCEDURE'," + "\n\tjob_action =>'DELETEALLEMP');" + "\nEND;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("JOBを作成しました"); } // @Test public void executeJob() throws SQLException { System.out.println("JOBを実行します"); sql = "select * from " + targetUser + "." + "EMPLOYEETABLE"; result = nowStatement.executeQuery(sql); while (result.next()) { String string = result.getString("name"); System.out.println("selectデータ :→→→→→: " + string); } sql = "\nBEGIN" + "\nDBMS_SCHEDULER.RUN_JOB ('" + targetUser + ".myjob');" + "\nEND;\n"; nowStatement.execute(sql); sql = "select * from " + targetUser + "." + "EMPLOYEETABLE"; result = nowStatement.executeQuery(sql); if (!result.next()) { System.out.println("データ消えてる"); } System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("JOBを実行しました"); } // @Test public void dropProcedureByJob() throws SQLException { System.out.println("JOB用プロシージャを削除します"); sql = "DROP PROCEDURE " + targetUser + "." + "deleteAllEmp"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("JOB用プロシージャを削除しました"); } // @Test public void dropJob() throws SQLException { System.out.println("JOBを削除します"); sql = "\nBEGIN" + "\nDBMS_SCHEDULER.DROP_JOB ('" + targetUser + ".myjob'); " + "\nEND;\n"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("JOBを削除しました"); } // @Test public void createLobTable() throws SQLException { System.out.println("LOBテーブルを作成します"); sql = "CREATE TABLE " + targetUser + "." + "IMGTABLE ( " + "ID VARCHAR(4) NOT NULL primary key," + "fileName VARCHAR(20) not null," + "IMG BLOB)"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("LOBテーブルを作成しました"); } // @Test public void insertBlob() throws SQLException, Exception { System.out.println("BLOBをinsertします"); nowStatement = conn.createStatement(); File file = new File("Sunset.jpg"); StringBuffer sb = new StringBuffer("INSERT INTO " + targetUser + ".imgtable (id,fileName,img)"); sb.append("VALUES(?,?,?)"); nowPstatement = conn.prepareStatement(sb.toString()); nowPstatement.setString(1, "01"); nowPstatement.setString(2, file.getName()); nowPstatement.setBinaryStream(3, new FileInputStream(file), (int) file .length()); int cnt = nowPstatement.executeUpdate(); System.out.println("BLOBをinsertしました"); } // @Test public void selectBlob() throws SQLException, Exception { System.out.println("BLOBを取得します"); nowPstatement = conn.prepareStatement("" + "select img from " + targetUser + ".imgtable Where id = ?"); nowPstatement.setString(1, "01"); result = nowPstatement.executeQuery(); int iData = 0; InputStream inputStream = null; BufferedInputStream bf = null; while (result.next()) { Blob blob = (Blob) result.getBlob(1); inputStream = blob.getBinaryStream(); } bf = new BufferedInputStream(inputStream); FileOutputStream out = new FileOutputStream("copySunset.jpg"); while ((iData = bf.read()) != -1) { out.write(iData); } System.out.println("BLOBを取得しました"); } // @Test public void dropLobTable() throws SQLException { System.out.println("テーブルを削除します"); sql = "DROP TABLE " + targetUser + "." + "IMGTABLE purge"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("テーブルを削除しました"); } // @Test public void loadJava() throws Exception{ System.out.println("Javaをoracleにロードします"); String user = connectionUser + "/" + connectionPass + "@sudaorcl"; ProcessBuilder pb = new ProcessBuilder("CMD.EXE", "/C", "loadjava", "-user", user , "-schema" , targetUser , "C:\\Oscar.class" , ">", "stdout.txt", "2>", "stderr.txt"); // ProcessBuilder pb = new ProcessBuilder("CMD.EXE", "/C", "loadjava", "-user", "odu/hogeodu@sudaorcl" , "C:\\Oscar.class" , ">", "stdout.txt", "2>", "stderr.txt"); Process process = pb.start(); process.waitFor(); System.out.println("Javaをoracleにロードしました"); } // @Test public void createJavaFunction() throws SQLException { System.out.println("Javaファンクションを作成します"); sql = "\nCREATE or REPLACE FUNCTION " + targetUser + "." + "javaFunc" + "\nRETURN varchar2 " + "\nIS LANGUAGE java" + "\nNAME 'jp.co.suda.oracle.Oscar.quote() return java.lang.String';"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("Javaファンクションを作成しました"); } // @Test public void execJavaFunction() throws SQLException{ System.out.println("Javaファンクションを実行します"); sql = "{? = call + " + targetUser + "." + "javaFunc}"; CallableStatement cs = conn.prepareCall(sql); cs.registerOutParameter(1, Types.VARCHAR); cs.executeUpdate(); String data = cs.getString(1); cs.close(); System.out.println("Functionの戻り値 :→:" + data); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("Javaファンクションを実行しました"); } // @Test public void dropJavaFunction() throws SQLException { System.out.println("Javaファンクションを削除します"); sql = "DROP FUNCTION " + targetUser + "." + "javaFunc"; nowStatement.execute(sql); System.out.println("sql的には : " + sql + "を実行したからね"); System.out.println("Javaファンクションを削除しました"); } // @Test public void dropJava() throws SQLException, Exception { System.out.println("Javaをクラスを削除します"); String conuser = connectionUser + "/" + connectionPass + "@sudaorcl"; ProcessBuilder pb = new ProcessBuilder("CMD.EXE", "/C", "dropjava", "-user", conuser , "-schema" , targetUser , "C:\\Oscar.class" , ">", "stdDROPout.txt", "2>", "stdDROPerr.txt"); Process process = pb.start(); InputStream is = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line.toString()); } process.waitFor(); System.out.println("Javaをクラスを削除しました"); System.out.println("JavaLOBテーブルを削除します"); sql = "DROP TABLE " + targetUser + "." + "CREATE$JAVA$LOB$TABLE purge"; nowStatement.execute(sql); System.out.println("JavaLOBテーブルを削除します"); } @After public void tearDownMethod() { System.out.println("==================================== " + testno + " つめのテストを終了します ===================================="); testno = testno + 1; } /** * * クローズ処理 * * @throws Exception */ @AfterClass public static void teardown() throws Exception { DatabaseMetaData metaData = conn.getMetaData(); System.out.println(""); System.out.println(""); System.out .println("接続ユーザ" + metaData.getUserName() + "のコネクションをクローズします"); if (result != null) { result.close(); } if (result != null) { nowStatement.close(); } if (conn != null) { // ここでoracleのセッションも破棄される conn.close(); } } }