일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코딩
- Java업캐스팅
- nodejs
- 자바 추상메서드
- 자바 Random클래스
- Java try-catch
- Express
- Java추상클래스
- oracle
- 자바 String클래스
- 데이터베이스
- Java 내부 클래스
- java super( )
- dbeaver
- Java문자열 클래스
- Java thorw
- DBMS
- 자바 Wrapper클래스
- 자바 문자열 클래스
- Java객체배열
- 자바 내부 클래스
- 자바 try-catch
- db
- database
- Java다운캐스팅
- 오라클
- 자바 스트링클래스
- 자바 예제
- Java 추상 메서드
- 자바 제어문
- Today
- Total
코딩이란 무엇일까
JDBC[36일차] JDBC 사용하여 데이터 삽입 본문
데이터 삽입
JDBC를 사용해 ORACLE과 JAVA를 연동 한 뒤
테이블에 값을 삽입해 볼 것이다.
연동
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//db연결
public class DBConnecter {
public static Connection getConnection() {
Connection conn=null;
String url="jdbc:oracle:thin:@localhost:1521:XE";
String user="PROJECT";
String pw="1234";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url,user,pw);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
return conn;
}
}
해당 클래스는 ORACLE과 자바가 연동될 수 있게 따로 메소드로 만들어 두었다.
따라서 기능을 만들 때 마다 메소드를 호출하여 연동시켜줄 수 있다.
VO클래스 만들기
import java.sql.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class H_MEMBER_VO {
private int MEMBER_NO;
private int TRAINER_NO;
private String ID;
private String PW;
private String name;
private String PHONE;
private String GENDER;
private String BIRTH_DATE;
}
해당 테이블에 해당되는 컬럼의 변수들을 만들고
lombok을 사용하여 getter,생성자를 만들어 주었다.
DAO클래스 만들기
public class H_MEMBER_DAO {
Connection conn;
PreparedStatement pstm;
ResultSet rs;
//싱글톤 객체 생성
private static H_MEMBER_DAO dao=new H_MEMBER_DAO();
private H_MEMBER_DAO() {}
public static H_MEMBER_DAO getMemberDao() { return dao;}
}
DAO클래스에는 Connection,PreparedStatement,ResultSet타입의 변수를 선언해준 뒤
싱글톤 객체를 생성해 주었다.
싱글톤 객체를 생성하면 메모리 낭비를 방지할 수 있고 클래스 간에 데이터 공유가 쉽다..
라는 장점이 있다지만 JDBC 사용할 때 그냥 사용하길래 사용해봤다.
데이터 삽입 메소드 만들어보기(INSERT)
public boolean insert(H_MEMBER_VO member) throws SQLException {
boolean check=false;
String query="INSERT INTO H_MEMBER\r\n"
+ "(MEMBER_NO, TRAINER_NO, NAME, ID, PASSWORD, PHONE, GENDER, BIRTH_DATE)"
+ "VALUES(SQ_MEMBER_NO.nextval,?,?,?,?,?,?,?)";
conn = DBConnecter.getConnection();
pstm= conn.prepareStatement(query);
pstm.setInt(1, member.getTRAINER_NO());
pstm.setString(2, member.getName());
pstm.setString(3, member.getID());
pstm.setString(4, member.getPW());
pstm.setString(5, member.getPHONE());
pstm.setString(6, member.getGENDER());
pstm.setString(7, member.getBIRTH_DATE());
if(pstm.executeUpdate()==1) {check=true;}
if(pstm!=null) {pstm.close();}
if(conn!=null) {conn.close();}
return check;
}
데이터 삽입 메소드를 만들어 봤다.
참고로 DAO클래스 안에 만들었다.
우선 메소드의 반환 타입은 boolean이다.
데이터 삽입이 성공했는지 실패했는지 true, false로 반환하기 위함이다.
매개변수로는 위에 설정한 H_MEMBER_VO타입을 받는다.
String query에 담은 문자열이 쿼리문인데 데이터를 삽입해야 하니까 insert를 사용했다.
pstm변수에 query문을 담아준 뒤
쿼리문에 있는 ? 에 값을 전달해 주기 위해서
setXXX메소드를 사용해야 한다.
XXX는 참고로 타입이다. 해당 컬럼에 맞게 타입을 사용하면 된다.
? 에 맞게 값을 다 설정해주었다면
pstm.executeUpdate( )의 반환 값이 1인지 확인한다.
executeUpdate메소드는 레코드의 건수를 반환하기 때문에
1이 반환되었다면 데이터 삽입이 성공된 것이다.
따라서 check를 true로 바꾸어 준 뒤
사용했던 변수들은 다 닫아주자.
그리고 check를 반환해준다.
데이터 삽입 테스트해보기
public static void main(String[] args) throws SQLException {
H_MEMBER_DAO dao=H_MEMBER_DAO.getMemberDao();
H_MEMBER_VO vo=new H_MEMBER_VO(0,
1,
"먕먕",
"1234",
"1234",
"010-1234-1234",
"M",
"1970-09-01");
if(dao.insert(vo)) { System.out.println("데이터 삽입 성공");}
else {System.out.println("데이터 삽입 실패");}
}
H_MEMBER_DAO의 메서드를 사용하기 위해 dao변수를 하나 만들었고
H_MEMBER_VO에 값을 넣기 위해서 H_MEMBER_VO타입 객체도 만들어 주었다.
dao.insert( )메소드에 값을 전달해 주기 위해서 H_MEMBER_VO의 생성자에 값을 넣어주었다.
값을 넣어준 vo변수를 doa.insert( )메소드에 넣어준 뒤 true면 데이터 삽입이 성공한 것이고
false라면 데이터 삽입 실패이다.
실행해 보자.
데이터 삽입 성공이 떴지만 불안하니 테이블도 확인해 보자
H_MEMBER테이블을 SELECT 해보았다.
너무 잘 들어가 있다.
'국비지원수업' 카테고리의 다른 글
[38일차]프론트엔드(2)-HTML태그(<h1>,<p>,<br>,<hr>,<ul>,<ol>,<li>,<a>) (0) | 2022.12.15 |
---|---|
[38일차] 프론트엔드(1)-apache tomcat설치,Dynamic Web Project프로젝트 생성, 서버 연결해보기 (0) | 2022.12.15 |
ORACLE[32일차] JDBC사용하여 DB로 연동해보기/ 자바로 SQL문 실행 (0) | 2022.12.07 |
ORACLE[27일차](2) 날짜 함수 , 집계 함수,GROUP BY (0) | 2022.11.30 |
ORACLE[27일차](1)-문자열 함수,숫자 함수 (0) | 2022.11.30 |