일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 표 구현
- var 변수
- 가위바위보 게임
- 변수 기본형
- 객체 배열
- Math 함수
- count_program
- color code
- 업다운 게임
- 논리 연산자
- Do while
- IF else
- SQLIntegrityConstraintViolationException
- 컬렉션프레임워크
- DropDown
- Scanner
- 할당 연산자
- 삼항(조건) 연산자
- decimalformat
- 유효성 검사
- 배열 array
- 문자열 비교
- 변수
- 관계 연산자
- Style Sheet
- 형변환 연산자
- 접근제한자
- 반복문
- switch-case
- 간단한 연산
Archives
- Today
- Total
무룩 공부방
[Java03] DB연동 연습 (1) (Eclipse, SQL Developer) 본문
그동안 새로운 개념을 학습할 때 마다 진행 되었던 성적처리 프로그램을 저번시간에 학습했던 싱글톤으로 생성된 객체로 DB에 접근하여 테이블을 생성해본다.
# JDBC (Java Database Connectvity)
자바 언어로 다양한 종류의 관계형 데이터베이스의 접속하고
SQL문을 수행하여 처리하고자 할때 사용되는 표준 SQL 인터페이스 API이다.
# JDBC 연동
1. 오라클 설치
2. table 만들기 + CRUD
3. DB접속
1) 드라이버로딩
2) 접속
DAO (데이터베이스와 연동하는 오브젝트) - CRUD처리하는 Class(method)를 DAO에저장
VO, DTO class를 만듬 (저장 데이터를 vo로 불러와서 저장 / 입력값을 vo에 저장하고 table로 보냄)
데이터를 주고 받을 때에는 객체로 보내고 받아야하기 때문
<field / VO>
package java03_jdbc.dao;
public class ScoreVo {
private int numid;
private String name;
private int kor;
private int eng;
private int mat;
public int getNumid() {
return numid;
}
public void setNumid(int numid) {
this.numid = numid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
}
<main>
package java03_jdbc;
import java.util.Scanner;
import java03_jdbc.dao.ScoreDao;
public class ScoreProject {
public static void main(String[] args) {
int menu;
Scanner sc = new Scanner(System.in);
ScoreDao dao = new ScoreDao();
boolean flag = true;
while(flag) {
System.out.print("[1]입력 [2]검색 [3]수정 [4]삭제 [5]종료 : ");
menu = sc.nextInt();
switch(menu) {
case 1 :
dao.view();
break;
case 5 :
System.out.println("종료");
flag = false;
break;
}
}//while
sc.close();
}//main
}//class
<DAO>
package java03_jdbc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Scanner;
import java03_jdbc.db.Db;
public class ScoreDao {
Scanner sc = new Scanner(System.in);
public void view() {
System.out.print("번호 이름 국어 영어 수학 : ");
int numid = sc.nextInt();
String name = sc.next();
int kor = sc.nextInt();
int eng = sc.nextInt();
int mat = sc.nextInt();
ScoreVo vo = new ScoreVo();
vo.setNumid(numid);
vo.setName(name);
vo.setKor(kor);
vo.setEng(eng);
vo.setMat(mat);
ScoreInsert(vo);
}
public void ScoreInsert(ScoreVo vo) {
Db db = Db.getDb();
Connection conn = db.getConnection(); /////////DB접속
PreparedStatement pstmt = null; //statement 방식보다 빠름 / 대입해주는 객체
// query문을 실행하기 위한 객체
String sql = "insert into score (numid,name,kor,eng,mat) values "
+ " (score_seq.nextval, ?, ?, ?, ?)";
try {
pstmt = conn.prepareStatement(sql); // sql을 실행하기 위한 준비
pstmt.setInt(1, vo.getNumid()); // 인덱스가 1부터 시작됨에 주의
pstmt.setString(1, vo.getName());
pstmt.setInt(2, vo.getKor());
pstmt.setInt(3, vo.getEng());
pstmt.setInt(4, vo.getMat());
pstmt.executeUpdate(); // sql실행
} catch (Exception e) {
} finally {
}
}
}
위와 같이 DB와 연동하여 데이터 입력이 잘 이루어진 모습을 볼 수 있는데 입력 데이터 홍길순의 번호가 21인 이유는 학습중 NUMID를 Primary Key로 지정한뒤, 시퀀스(Sequence)를 이용하여 NUMID에 추가 하였는데 테스트 실행 횟수만큼 증가하였다. 이 부분은 추후에 시퀀스에 대해 학습할 때 다시 살펴볼 예정이다.
'IT > Java03_JDBC' 카테고리의 다른 글
[Java03] DB연동 연습 (2) (Eclipse, SQL Developer) (0) | 2023.10.15 |
---|---|
[Java03] 데이터 베이스(Database)와 싱글톤 (Eclipse, SQL Developer) (0) | 2023.10.15 |