본문 바로가기
Back-End/JDBC

[JDBC] sql_insert / update 문 예문

by 찐코딩 2021. 10. 5.

 SQL문이 select SQL문인 경우 excuteQuery() 메소드를 이용
  ==> 반환형이 ResultSet형
  - SQL문이 select가 아닌 insert, update, delete SQL문인 경우
 executeUpdate() 메소드 이용  ==> 반환형이 int형
 반환형이 int인 이유 : 행 삽입, 행 수정, 행 삭제 갯수를 표현한 것.
 SQL문이 성공적으로 실행이 되면, 반환되는 값은 1이라는 값이 반환

 

 

-- 메모 번호를 위한 시퀀스
CREATE SEQUENCE MEMO_SEQ 
START WITH 1 
INCREMENT BY 1 NOCACHE;

insert문 예문) memo테이블에 새로운 메모를 넣어보자

package sist;

import java.sql.*;
import java.util.Scanner;

public class Insert {

	public static void main(String[] args) {
		
		// DB와 연결 객체
		Connection con = null;

		// SQL문을 전송하는 객체
		PreparedStatement pstmt = null;
		
		// SQL문을 실행한 실행 결과를 가지고 있는 객체
		ResultSet rs = null;	
		
		String driver = "oracle.jdbc.driver.OracleDriver";
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		
		String user = "web";
		
		String password = "1234";
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("추가할 메모의 정보를 입력해 주세요");
		
		System.out.print("메모 제목 : ");
		String title = sc.nextLine(); 	// 한줄 간격으로 받겠다.
		
		System.out.println("메모 작성자 : ");
		String writer = sc.nextLine();
		
		System.out.println("메모 내용 : ");
		String content = sc.nextLine();
		
		
		try {
			// 1. 오라클 드라이버 로딩
			Class.forName(driver);
			
			// 2. 데이터 베이스와 연결
			con = DriverManager.getConnection(url, user, password);
			
			// 3. 데이터베이스에 SQL문을 전송하기 위한 쿼리문 작성
			String sql = "insert into memo values(memo_seq.nextval,?,?,?,sysdate)";
			
			pstmt = con.prepareStatement(sql);
			
			pstmt.setString(1, title); 	// 첫번째 물음표 위치에 title값 넣는다.
			pstmt.setString(2, writer); 	// 두번째 물음표 위치에 writer값 넣는다.
			pstmt.setString(3, content); 	// 세번째 물음표 위치에 content값 넣는다.
			
			// 4. 데이터베이스에 SQL문을 전송.
			// SQL문이 select SQL문인 경우 excuteQuery() 메소드를 이용
			// 		==> 반환형이 ResultSet형
			// 		- SQL문이 select가 아닌 insert, update, delete SQL문인 경우
			//		executeUpdate() 메소드 이용  ==> 반환형이 int형
			//		반환형이 int인 이유 : 행 삽입, 행 수정, 행 삭제 갯수를 표현한 것.
			//		SQL문이 성공적으로 실행이 되면, 반환되는 값은 1이라는 값이 반환
			int result = pstmt.executeUpdate();	// DB에 데이터 추가 진행
			
			if(result > 0) {
				System.out.println("데이터 추가 성공!");
			}else {
				System.out.println("데이터 추가 실패");
			}
			
			// 5. 연결된 객체를 닫기
			pstmt.close(); con.close(); sc.close();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();		}
		
	}

}

 

 

update문 예문) memo테이블의 특정 메모 내용을 수정해보자

package sist;

import java.sql.*;
import java.util.Scanner;

import javax.swing.JOptionPane;

// 데이터 수정 쿼리문
public class Update {

	public static void main(String[] args) {
		
		Connection con = null; 		// 데이터베이스와 연결하는 객체 생성
		
		PreparedStatement pstmt = null;		//SQL문을 전송하는 객체 생성
		
		// ResultSet rs = null; 		//SQL문의 실행 결과를 가지고 있는 객체 ==> select 쿼리문에서만 사용
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";	// URL 사용
		
		String driver = "oracle.jdbc.driver.OracleDriver";
		
		String user = "web";
		
		String password = "1234";
		
		Scanner sc = new Scanner(System.in);
		
		int no = Integer.parseInt(JOptionPane.showInputDialog("수정할 메모 글 번호를 입력하세요"));
		String title = JOptionPane.showInputDialog("메모 수정 제목을 입력하세요");
		String content = JOptionPane.showInputDialog("메모 수정 내용을 입력하세요");
		
		try {
			// 1. 오라클 드라이버 로딩
			Class.forName(driver);
			
			// 데이터베이스와 연결 진행
			con = DriverManager.getConnection(url, user, password);
			
			// 데이터베이스에 SQL문을 전송하기 위한 SQL문을 작성
			String sql = "update memo set title=?, content=? where bunho=?";
			
			// prepareStatement 객체 생성, 객체 생성 후 sql문 저장
			pstmt = con.prepareStatement(sql);
			
			// pstmt.set<데이터타입>(순서, 값);
			pstmt.setString(1, title);   // 첫번째 파라미터값에는 title 대입
			pstmt.setString(2, content); // 두번째 파라미터값에는 content 대입
			pstmt.setInt(3, no); // 세번쨰 파라미터값에는 번호 대입
			
			// 4. 데이터베이스에 SQL문을 전송
			// SQL문장을 실행하고 결과를 리턴
			int result = pstmt.executeUpdate();
			
			if(result > 0) {
				System.out.println("데이터 수정 성공");
			} else {
				System.out.println("데이터 수정 실패");
			}
			
			// 연결객체 종료
			pstmt.close(); con.close(); sc.close();
			
		} catch(Exception e) {
			e.printStackTrace();		}

	}
}

 

'Back-End > JDBC' 카테고리의 다른 글

[JDCB] select문 예문  (0) 2021.10.05
[JDBC] JDBC 프로그래밍 / 드라이버 / url / delete  (0) 2021.10.05

댓글