Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public class JDBCExam
- {
- Connection connection;
- /*
- * 고정된 SQL 문을 실행하거나 그것이 만들어낸 결과를 반환하는데 사용하는 오브젝트
- * 기본적으로 하나의 Statement 객체당 오직 하나의 ResultSet 객체만 동시에 열릴 수 있음
- * Statement와 PreparedStatement의 차이는 캐시 사용 여부
- * ?를 사용하는 경우는 PreparedStatement
- * 연속적 사용일때 PreparedStatement , CallableStatement
- * 비 연속적 사용도 사실 Statement랑 큰 차이 없음
- * Statement는 SQL문장을 직접 String으로 만들어서 실행하는 케이스
- * PreparedStatement는 미리 준비된 것인데 ? 부분에만 변화를 주어 지속적으로 SQL 수행
- * 인자만 받아서 처리하는 구조이며 매번 컴파일 하지 않을듯 하다.
- */
- Statement statement;
- PreparedStatement preparedStatement;
- ResultSet resultSet;
- int resultValue = 0;
- String driverName = "oracle.jdbc.driver.OracleDriver";
- String url = "oracle:thin:localhost:1521:ORCL";
- String user = "scott";
- String password = "tiger";
- String queryString = "INSERT INTO product VALUES (" + p_no + ", '" + p_name + "', " + p_price + ", '" + p_detail + "')";
- public JDBCExam()
- {
- try {
- // ① 로드
- Class.forName(driverName);
- // ② 연결 [Connection]
- connection = DriverManager.getConnection(url, user, password);
- // ② 연결 [Statement]
- statement = connection.createStatement();
- // ③ 실행 [CRUD]
- resultValue = statement.executeUpdate(queryString);
- // ② 연결 [PrepareStatement]
- preparedStatement = connection.prepareStatement(queryString);
- preparedStatement.setInt(1, p_no);
- preparedStatement.setString(2, p_name);
- preparedStatement.setInt(3, p_price);
- preparedStatement.setString(4, p_detail);
- // ③ 실행 [CRUD]
- resultValue = preparedStatement.executeUpdate();
- String queryString = "SELECT * FROM product";
- // ② 연결 [Statement]
- statement = connection.createStatement();
- // ③ 실행 [CRUD]
- resultSet = statement.executeQuery(queryString);
- // ② 연결 [PrepareStatement]
- preparedStatement = connection.prepareStatement(queryString);
- // ③ 실행 [CRUD]
- resultSet = preparedStatement.executeQuery();
- // 컬럼 정보 가져오기
- ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
- // 컬럼 출력
- System.out.println(resultSetMetaData.getColumnName(1) + "\t" + resultSetMetaData.getColumnName(2) + "\t" + resultSetMetaData.getColumnName(3) + "\t" + resultSetMetaData.getColumnName(4));
- while (resultSet.next())
- {
- System.out.println(resultSet.getInt("p_no") + "\t" + resultSet.getString("p_name") + "\t" + resultSet.getInt("p_price") + "\t" + resultSet.getString("p_detail"));
- }
- }
- catch (ClassNotFoundException e) {
- System.out.println("[로드 오류]\n" + e.getStackTrace());
- }
- catch (SQLException e) {
- System.out.println("[연결 오류]\n" + e.getStackTrace());
- }
- finally {
- // ④ 닫기
- closeDatabase();
- }
- }
- public void closeDatabase()
- {
- try {
- if( connection != null ) {
- connection.close();
- }
- if( statement != null ) {
- statement.close();
- }
- if( resultSet != null ) {
- resultSet.close();
- }
- }
- catch (SQLException e) {
- System.out.println("[닫기 오류]\n" + e.getStackTrace());
- }
- }
- public static void main(String[] args)
- {
- new JDBCExam();
- }
- }
Add Comment
Please, Sign In to add comment