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 |
댓글