2008. 7. 26. 17:20

JDBC DatabaseMetaData 사용 예제

1.     DatabaseMetaData 인터페이스 실습

 

l  Batch 작업 지원 여부에 따라 세 개의 데이터 일괄처리하여 삽입하는 예제

l  삽입할 데이터

Id

Name

Bonus

In_date

Dept_name

00010

이몽룡

85000.00

1998/7/1

영업부

00011

성춘향

75000.00

2000/7/1

영업부

00012

변학도

70000.00

2001/7/1

영업부

 

l  DatabaseMetaData를 이용하여 JDBC 드라이버가 일괄처리를 지원하는지의 여부를 알아보고 지원한느 경우에 세 개의 데이터를 삽입하는 예제

 

BatchTest_MetaData.java

 

01        import java.sql.*;

02       

03        public class BatchTest_MetaData{

04                  Connection con = null;

05                  DatabaseMetaData dbmd = null;

06                  Statement  stmt = null;

07                 

08                  public static void main (String args [])  {

09                             BatchTest_MetaData bt = new BatchTest_MetaData();

10                             bt.connect();

11                             bt.insertBatch();

12                             bt.close();

13                  }

14       

15                  public void connect(){

16                             try{

17                                       Class.forName("oracle.jdbc.driver.OracleDriver");

18                                       con = DriverManager.getConnection

19                                        ("jdbc:oracle:thin:@127.0.0.1:1521:ora9",

20                                       "jdbc00","jdbc00");

21                                       System.out.println("데이터베이스 연결되었습니다.");

22                            }catch(ClassNotFoundException e){

23                                     System.out.println("JDBC Driver load fail!!!");

24                          }catch(SQLException e){

25                                     System.out.println("Connection fail!!!");

26                                     e.printStackTrace();

27                         }

28                   }

29         

30         public void close(){

31                  try{

32                             con.close();       

33                             System.out.println("데이터베이스 연결 해제되었습니다.");

34                  }catch(SQLException e){

35                             System.out.println("Connection fail!!!");

36                             e.printStackTrace();

37                  }finally{

38                             try{

39                                        if(con != null) con.close();

40                             }catch(SQLException e){}

41                  }

42         }

43         

44         public void insertBatch(){

45                  try{

46                             dbmd = con.getMetaData();

47                             stmt = con.createStatement ();

48                             String query1 ="insert into emp values(";

49                query1 += "00010,'이몽룡',85000.00,";

50                             query1 += "TO_DATE('1998/07/01','YYYY/MM/DD'),";

51                             query1 += "'영업부')";

52                             String query2 = "insert into emp values(";

53                             query2 += "00011,'성춘향', 75000.00,";

54                             query2 += "TO_DATE('2000/07/01', 'YYYY/MM/DD'),";

55                             query2 += "'영업부')";

56                             String query3 = "insert into emp values(";

57                             query3 += "00012,'변학도', 70000.00,";

58                             query3 += "TO_DATE('2001/07/01', 'YYYY/MM/DD'),";

59                             query3 += "'영업부')";

60                             int total = 0;

61                             if(dbmd.supportsBatchUpdates()){

62                                       stmt.addBatch(query1);

63                                       stmt.addBatch(query2);

64                                       stmt.addBatch(query3);

65                                       int [] rowcount = stmt.executeBatch();

66                                       for(int i = 0; i < rowcount.length; i++){

67                                                  total += rowcount[i];

68                                       }          System.out.print

69                                                 ("배치작업에 의해 " + total);

70                                                  System.out.println

71                                                  (" 개의 데이터가 삽입되었습니다.");

72                             }else {

73                                       System.out.print

74                                       ("배치작업이 지원되지 않습니다.");

75                                       int count = stmt.executeUpdate(query1);

76                                       total += count;

77                                       if(count >= 1) {

78                                           count = stmt.executeUpdate(query2);

79                                           total += count;

80                                           if(count >= 1) {

81                                                  count = stmt.executeUpdate(query3);

82                                                  total += count;

83                                           }    

84                                       }         

85                                       System.out.println

86                                       (total + " 개의 데이터가 삽입되었습니다.");

87                             }                                                                        

88                            stmt.close();

89                            }catch(SQLException e){

90                                       e.printStackTrace();

91                             }finally {

92                                        try{

93                                         if(stmt != null) stmt.close();

94                                        }catch(SQLException e){}

95                             }

96         }

97        }

 

2.     DatabaseMetaData 인터페이스 실습

l  연결한 데이터베이스의 종류와 버전에 따라서 서로 다른 종류의 JDBC 드라이버를 사용해야 한다.

l  특정 기능을 수행하는 메서드를 올바르게 사용하여, JDBC를 수행하였을 때의 결과가 예상했던 바와 다르다면, 연결한 데이터베이스와 JDBC 드라이버의 종류와 버전이 맞지 않을 가능성도 있을 수 있다.

l  이번 예제에서는 연결한 데이터베이스와 JDBC 드라이버의 종류와 버전이 맞는지를 확인해보는 예제

 

JDBCVersionTest.java

 

01        import java.sql.*;

02       

03        class JDBCVersionTest{

04                  public static void main (String args [])

05                  throws SQLException{

06                             DriverManager.registerDriver

07                             (new oracle.jdbc.driver.OracleDriver());

08                             Connection conn = DriverManager.getConnection

09                             ("jdbc:oracle:thin:@127.0.0.1:1521:ora9",

10                             "jdbc00","jdbc00");

11                             DatabaseMetaData meta = conn.getMetaData ();

12                             System.out.println("Database Product Name : " +

13                             meta.getDatabaseProductName());

14                             System.out.println

15                             ("\nDatabase Product Version : \n" +

16                             meta.getDatabaseProductVersion());

17                             System.out.println

18                             ("\nJDBC Driver Name : " +

19                             meta.getDriverName());

20                             System.out.println

21                             ("\nJDBC Driver Version : " +

22                             meta.getDriverVersion());

23                             System.out.println

24                             ("\nJDBC Driver Major Version : " +

25                             meta.getDriverMajorVersion());

26                             System.out.println

27                             ("\nJDBC Driver Minor Version : " +

28                             meta.getDriverMinorVersion());

29                  }

30        }