Guest User

Untitled

a guest
Apr 24th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6.  
  7. public class JDBCExam
  8. {
  9. Connection connection;
  10. /*
  11. * 고정된 SQL 문을 실행하거나 그것이 만들어낸 결과를 반환하는데 사용하는 오브젝트
  12. * 기본적으로 하나의 Statement 객체당 오직 하나의 ResultSet 객체만 동시에 열릴 수 있음
  13. * Statement와 PreparedStatement의 차이는 캐시 사용 여부
  14. * ?를 사용하는 경우는 PreparedStatement
  15. * 연속적 사용일때 PreparedStatement , CallableStatement
  16. * 비 연속적 사용도 사실 Statement랑 큰 차이 없음
  17. * Statement는 SQL문장을 직접 String으로 만들어서 실행하는 케이스
  18. * PreparedStatement는 미리 준비된 것인데 ? 부분에만 변화를 주어 지속적으로 SQL 수행
  19. * 인자만 받아서 처리하는 구조이며 매번 컴파일 하지 않을듯 하다.
  20. */
  21. Statement statement;
  22. PreparedStatement preparedStatement;
  23.  
  24. ResultSet resultSet;
  25. int resultValue = 0;
  26.  
  27. String driverName = "oracle.jdbc.driver.OracleDriver";
  28. String url = "oracle:thin:localhost:1521:ORCL";
  29. String user = "scott";
  30. String password = "tiger";
  31. String queryString = "INSERT INTO product VALUES (" + p_no + ", '" + p_name + "', " + p_price + ", '" + p_detail + "')";
  32.  
  33. public JDBCExam()
  34. {
  35. try {
  36. // ① 로드
  37. Class.forName(driverName);
  38. // ② 연결 [Connection]
  39. connection = DriverManager.getConnection(url, user, password);
  40.  
  41. // ② 연결 [Statement]
  42. statement = connection.createStatement();
  43. // ③ 실행 [CRUD]
  44. resultValue = statement.executeUpdate(queryString);
  45.  
  46. // ② 연결 [PrepareStatement]
  47. preparedStatement = connection.prepareStatement(queryString);
  48. preparedStatement.setInt(1, p_no);
  49. preparedStatement.setString(2, p_name);
  50. preparedStatement.setInt(3, p_price);
  51. preparedStatement.setString(4, p_detail);
  52.  
  53. // ③ 실행 [CRUD]
  54. resultValue = preparedStatement.executeUpdate();
  55.  
  56. String queryString = "SELECT * FROM product";
  57.  
  58. // ② 연결 [Statement]
  59. statement = connection.createStatement();
  60. // ③ 실행 [CRUD]
  61. resultSet = statement.executeQuery(queryString);
  62.  
  63. // ② 연결 [PrepareStatement]
  64. preparedStatement = connection.prepareStatement(queryString);
  65. // ③ 실행 [CRUD]
  66. resultSet = preparedStatement.executeQuery();
  67. // 컬럼 정보 가져오기
  68. ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
  69.  
  70. // 컬럼 출력
  71. System.out.println(resultSetMetaData.getColumnName(1) + "\t" + resultSetMetaData.getColumnName(2) + "\t" + resultSetMetaData.getColumnName(3) + "\t" + resultSetMetaData.getColumnName(4));
  72.  
  73. while (resultSet.next())
  74. {
  75. System.out.println(resultSet.getInt("p_no") + "\t" + resultSet.getString("p_name") + "\t" + resultSet.getInt("p_price") + "\t" + resultSet.getString("p_detail"));
  76. }
  77.  
  78. }
  79. catch (ClassNotFoundException e) {
  80. System.out.println("[로드 오류]\n" + e.getStackTrace());
  81. }
  82. catch (SQLException e) {
  83. System.out.println("[연결 오류]\n" + e.getStackTrace());
  84. }
  85. finally {
  86. // ④ 닫기
  87. closeDatabase();
  88. }
  89.  
  90. }
  91.  
  92. public void closeDatabase()
  93. {
  94. try {
  95. if( connection != null ) {
  96. connection.close();
  97. }
  98. if( statement != null ) {
  99. statement.close();
  100. }
  101. if( resultSet != null ) {
  102. resultSet.close();
  103. }
  104. }
  105. catch (SQLException e) {
  106. System.out.println("[닫기 오류]\n" + e.getStackTrace());
  107. }
  108. }
  109.  
  110. public static void main(String[] args)
  111. {
  112. new JDBCExam();
  113. }
  114. }
Add Comment
Please, Sign In to add comment