○ 변수를 이용해서 JDBC 행추가 SQL 작성
ⓛ SQL 작성 : ? → 특정값(변수)으로 대입할 수 있는 표식
StringBuilder sql=new StringBuilder();
sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, addr, wdate) ");
sql.append(" VALUES(sungjuk_seq.nextval, ?, ?, ?, ?, ?, sysdate) ");
② SQL형식으로 변환 및 변수 대입 : ?의 개수, 순서, 자료형이 일치해야 한다
PreparedStatement pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, "김연아"); // 1→ 첫번째 물음표, uname칼럼
pstmt.setInt(2, 90); // 2→ 두번째 물음표, kor칼럼
pstmt.setInt(3, 100); // 3→ 세번째 물음표, eng칼럼
pstmt.setInt(4, 85); // 4→ 네번째 물음표, mat칼럼
pstmt.setString(5, "Jeju"); // 5→ 다섯번째 물음표, addr칼럼
③ SQL문 실행
int result = pstmt.executeUpdate();
○ sungjuk테이블 행추가 전체 소스
import java.sql.*;
public class Test04_insert {
public static void main(String[] args) {
try {
String url ="jdbc:oracle:thin:@localhost:1521:xe";
String user ="system";
String password="1234";
String driver ="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
Connection con =DriverManager.getConnection(url, user, password);
System.out.println("오라클 DB 서버 연결 성공");
StringBuilder sql=new StringBuilder();
sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, addr, wdate) ");
sql.append(" VALUES(sungjuk_seq.nextval, ?, ?, ?, ?, ?, sysdate) ");
PreparedStatement pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, "김연아");
pstmt.setInt(2, 90);
pstmt.setInt(3, 100);
pstmt.setInt(4, 85);
pstmt.setString(5, "Jeju");
int result = pstmt.executeUpdate();
if(result==0) {
System.out.println("행 추가 실패");
}else {
System.out.println("행 추가 성공");
}
pstmt.close();
con.close();
} catch (Exception e) {
System.out.println("오라클 DB 연결 실패 : " + e);
}
}//main() end
}//class end
● Practice 연습문제
Q) sno=22행의 데이터를 아래의 내용으로 수정하시오
int sno=22;
String uname="JSPark";
int kor=90, eng=85, mat=100;
int tot=(kor+eng+mat);
int aver=tot/3;
String addr="Suwon";
- SQL문 작성 (DB연결 생략)
StringBuilder sql=new StringBuilder();
sql.append(" UPDATE sungjuk ");
sql.append(" SET uname=? ");
sql.append(" ,kor=? ");
sql.append(" ,eng=? ");
sql.append(" ,mat=? ");
sql.append(" ,tot=? ");
sql.append(" ,aver=? ");
sql.append(" ,addr=? ");
sql.append(" WHERE sno=? ");
- SQL문 변환, 변수대입, 실행
PreparedStatement pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, uname);
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setInt(5, tot);
pstmt.setInt(6, aver);
pstmt.setString(7, addr);
pstmt.setInt(8, sno);
int result = pstmt.executeUpdate();
'Backend > JAVA_JDBC' 카테고리의 다른 글
06. JDBC, select문 활용 연습문제(count, avg, like, paging) (0) | 2022.06.18 |
---|---|
05. JDBC, 테이블에서 행 가져오기 (select) (0) | 2022.06.17 |
03. JDBC, 행 수정 & 삭제 (update, delete) (0) | 2022.06.16 |
02. JDBC, 행 추가 (insert) (0) | 2022.06.15 |
01. JDBC, 자바와 오라클DB(18c XE) 연동 (0) | 2022.06.14 |
댓글