Skip to content
Home » 자바 Db 연동 프로젝트 | [Java] Db연동을 위해 알아야 하는 개념(Jdbc Driver?) 102 개의 베스트 답변

자바 Db 연동 프로젝트 | [Java] Db연동을 위해 알아야 하는 개념(Jdbc Driver?) 102 개의 베스트 답변

당신은 주제를 찾고 있습니까 “자바 db 연동 프로젝트 – [JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?)“? 다음 카테고리의 웹사이트 https://sk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://sk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 IT핥기 이(가) 작성한 기사에는 조회수 679회 및 좋아요 27개 개의 좋아요가 있습니다.

Table of Contents

자바 db 연동 프로젝트 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?) – 자바 db 연동 프로젝트 주제에 대한 세부정보를 참조하세요

자바에서 데이터베이스를 연동하기 위해 반드시 알아야 하는 개념입니다.
JDBC(Java DataBase Connection)의 개념과 사용하기 위한 방법을 이해합시다!
꼭 오라클이 아니더라도 동일한 개념으로 자바코드를 사용하게 되니 꼭 가지고 가시길 바라요!

05:00 Driver의 개념
09:13 Driver 다운로드
11:57 자바프로젝트에 jdbc드라이버 적용하기
15:57 주의 하기!(ClassNotFoundException 발생 이유)

자바 db 연동 프로젝트 주제에 대한 자세한 내용은 여기를 참조하세요.

자바 DB 데이터베이스 연결하기(프로젝트 대비)

자바 DB 데이터베이스 연결하기(프로젝트 대비). Jaybon 2020. … 준비물 : 자바, 오라클DB, SQL Developer … 자바 공공데이터 + SWING 연동하기.

+ 더 읽기

Source: ondolroom.tistory.com

Date Published: 5/18/2021

View: 4246

Top 41 자바 Db 연동 프로젝트 16797 Good Rating This Answer

JDBC 드라이버를 로드 · 4. DB와 Connection( … <자바와 오라클 연동> JDBC: Java Database Connection 1. 데이터베이스 라이브러리를 프로젝트에 추가 2.

+ 자세한 내용은 여기를 클릭하십시오

Source: aodaithanhmai.com.vn

Date Published: 2/23/2022

View: 9158

개인 프로젝트 – oracle DB를 연동한 GUI프로그램 – velog

ArrayList; import java.util.List; public LunchManageDAO extends JdbcDAO{ //1 private static LunchManageDAO _dao; //2 생성자의 은닉화 선언 …

+ 더 읽기

Source: velog.io

Date Published: 2/8/2022

View: 9576

[Java] 예제 – DB연동 회원관리 프로그램 v1.1(콘솔,JDBC) , jxl …

[Java] 예제 – DB연동 회원관리 프로그램 v1.1(콘솔,JDBC) … MemberDTO.java – 한명의 회원의 정보를 관리할 목적으로 작성한 클래스.

+ 자세한 내용은 여기를 클릭하십시오

Source: blog.naver.com

Date Published: 7/24/2022

View: 8539

Java 국비과정 : Java 데이터베이스 연동 – 풍’s 코딩자습실

이클립스와 연동하기 위해 새로운 프로젝트를 생성한다. 자바가 외부 프로그램(DB)에 …

+ 여기에 더 보기

Source: sentinel32.tistory.com

Date Published: 7/7/2022

View: 4168

자바 Db 연동 프로젝트 | [Java] Db연동을 위해 알아야 하는 개념 …

JAVA CLASS : 자바에 오라클 DB 연동하기(데이터 삽입) … 1. 데이터베이스 라이브러리를 프로젝트에 추가 · 2. DB와 연동하기 위해서 필요한 상수들의 …

+ 여기에 더 보기

Source: chewathai27.com

Date Published: 1/3/2021

View: 7736

26. JDBC [OracleDB과 JAVA연동], MVC모델-(회원가입, 로그인)

자바와 오라클을 연동하기 위해서는 JDBC(JAVA DATABASE CONNECTIVITY) … 이클립스에서 프로젝트를 우클릭 -> build path를 눌러 ojdbc6.jar 파일을 …

+ 여기에 표시

Source: hongs-coding.tistory.com

Date Published: 9/10/2021

View: 9461

JAVA 자바 JDBC 오라클 DB 연동

자바 JDBC 오라클 DB 연결방법을 알아본다. 자바 JDBC 데이터베이스 시스템에 접근할 수 있는 자바 API이다. 오라클 DB 연동하기 자바 프로젝트를 …

+ 여기에 자세히 보기

Source: xianeml.tistory.com

Date Published: 2/30/2022

View: 5614

주제와 관련된 이미지 자바 db 연동 프로젝트

주제와 관련된 더 많은 사진을 참조하십시오 [JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?)
[JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?)

주제에 대한 기사 평가 자바 db 연동 프로젝트

  • Author: IT핥기
  • Views: 조회수 679회
  • Likes: 좋아요 27개
  • Date Published: 2022. 5. 11.
  • Video Url link: https://www.youtube.com/watch?v=91QGnY8K-cc

자바 DB 데이터베이스 연결하기(프로젝트 대비)

준비물 : 자바, 오라클DB, SQL Developer

들어가기 전에…

처음 오신 분들은 아래의 내용을 숙지하고 진행하시는 것이 좋습니다.

https://ondolroom.tistory.com/265

https://ondolroom.tistory.com/266

https://ondolroom.tistory.com/267

DB 유저 생성

SQL Developer에서 관리자에 접속한 뒤

아이디 test1 비번 test1 을 쳐본다.

위 오류는 오라클 11 버전 이상부터 발생하는 것으로

2가지 해결법이 있다

1. 아이디에 c##을 붙이기

말그대로 test1을 c##test1로 적어서 실행하는 것이다.

이 방법이 헷갈린다면 아래 2번을 따라해보자

2. ALTER SESSION SET “_ORACLE_SCRIPT” = true; 사용하기

아이디 비밀번호를 생성하기 전에 아래처럼 코드를 미리 하나 더 실행 해줘야한다

코드를 복사하려면 더보기 클릭

더보기 ALTER SESSION SET “_ORACLE_SCRIPT” = true; CREATE USER test1 IDENTIFIED BY test1;

다시 아이디 비밀번호를 입력하면 정상적으로 실행된다

유저에게 권한주기

생성한 유저에게 권한을 줘야만 테이블 등을 생성하고 내용을 입력 할 수 있다

코드를 복사하려면 더보기 클릭

더보기 GRANT CREATE SESSION TO test1;

GRANT CREATE TABLESPACE TO test1;

GRANT CREATE TABLE TO test1;

alter user test1 default tablespace users quota unlimited on users;

유저 스키마 생성

접속 파트의 +버튼을 눌러서 새 스키마를 생성해보자

스키마의 이름을 적고

아이디 비밀번호를 입력한다

세부정보는 그대로 유지하고 테스트를 해본다

위 사진에서 왼쪽아래에 보면 성공이라고 뜨면 잘 작동하는 것이다

접속을 누른다

접속 파트에 테스트라는 스키마가 생기고

워크시트도 테스트유저로 바뀌었다

테이블 생성

테이블을 마우스 오른쪽 클릭하면 새 테이블 생성메뉴가 있다

들어가 보자

아래와 같이 나온다

테이블 이름은 영어로 하는 것이 좋다

+ 버튼을 이용해서 속성을 추가해보자

약국이름 (NAME)과 주소(LOC)를 만들었다

약국이름은 문자열이기 때문에 VARCHAR2를 사용하였고, 1글자에 3바이트를 가정하고 넉넉하게 40을 주었다

주소 또한 문자열이기 때문에 VARCHAR2를 사용하였고, 넉넉하게 300을 주었다

오른쪽 아래의 확인을 눌러 테이블을 생성한다

접속 파트에 생성 된 테이블을 확인하자

테이블에 데이터 넣기

워크시트에서 테스트 자료를 넣는 코드를 짜보자

아래와 같이 입력해본다

더보기 INSERT INTO drugstore(NAME, LOC)

VALUES(‘테스트약국’, ‘서울특별시 강남구 XX’);

정상적으로 삽입된 것을 확인

테이블을 불러와보면 잘 나오는 것을 확인 할 수 있다

마지막으로 커밋을 해주면 DB에 저장된다

오라클 라이브러리를 자바에 연결하기

먼저 컴퓨터에 설치된 오라클이나 디벨로퍼에서 ojdbc8.jar을 찾아본다

해당 파일을 복사해서 이클립스의 개인 라이브러리 폴더에 넣는다

해당 워크스페이스를 오른쪽 클릭하여 빌드패스에 접속한다

라이브러리 탭에서 Add JARs를 선택하고 ojdbc8.jar을 추가한다

추가되었다면 Apply and Close를 누른다

java 코드 작성

TestDB.java라는 파일을 생성하고 어떤 메서드를 넣을 것인지 정한다

아래의 5가지 기능을 구현할 것 이다.

DB에 연결하기

DB 연결 끊기

데이터 넣기(INSERT)

데이터 가져오기(SELECT)

데이터 지우기(DELETE)

과도한 try catch 남발을 방지하고 알아보기 쉬운 코드를 위해

throws Exception을 함수 뒤에 붙여주었다

그리고 약국 정보를 저장할 객체도 만들어 준다

코드를 복사하려면 더보기를 클릭

더보기 package example; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; class Info { String name; String loc; public Info(String name, String loc) { this.name = name; this.loc = loc; } } public class TestDB { // 전역 공간에 쿼리에 필요한 레퍼런스를 준비하기 // DB에 연결하기 void openCon() throws Exception { } // DB 연결 끊기 void closeCon() throws Exception { } // 데이터 넣기 void insertData(String name, String loc) throws Exception { } // 데이터 가져오기 void selectData() throws Exception { } // 데이터 지우기 void deleteData(String name) throws Exception { } public static void main(String[] args) { } }

전역 공간에 레퍼런스 준비

함수들이 객체나 데이터를 공유하기 위해서는 레퍼런스가 전역 공간에 준비되어야 한다

코드를 복사하려면 더보기 클릭

더보기 Connection con; // 디비 연결 String query; // 쿼리문 내용 Statement stmt; // 워크시트 (쿼리문 입력 공간) ResultSet rs; // 결과 ArrayList storeInfos = new ArrayList<>(); // 결과를 어레이리스트에 저장

DB 연결 메서드

해당 내용은 외울 필요없이 어디에 저장해 놓았다가 꺼내서 쓰자

흐름만 알면된다.

1.자바 라이브러리 파일로딩

2.입출력 객체 생성

3.워크시트 생성

코드를 복사하려면 더보기 클릭

더보기 // 오라클 주소, 아이디 비밀번호 String url = “jdbc:oracle:thin:@localhost:1521:XE”; String userid = “test1”; String pwd = “test1”; // 자바 라이브러리 파일 로드 Class.forName(“oracle.jdbc.driver.OracleDriver”); System.out.println(“드라이버 로드 성공”); // 네트워크 입출력 객체 생성 System.out.println(“데이터베이스 연결 준비…”); con = DriverManager.getConnection(url, userid, pwd); System.out.println(“데이터베이스 연결 성공”); // 워크시트 생성 stmt = con.createStatement(); System.out.println(“워크시트 생성”);

테스트

main에서 TestDB객체를 생성하고 openCon() 함수를 실행해보자

DB 연결 끊기 메서드

간단하게 .close()를 사용하여 만들 수 있다

더보기 con.close(); System.out.println(“데이터베이스 연결 해제”);

테스트

연결했다가 끊어본다

DB에 데이터 넣기 메서드

stmt라는 워크시트 객체에 INSERT 쿼리문을 입력하고 실행시키는 작업이다

더보기 query = “INSERT INTO drugstore(name, loc) VALUES(‘” + name + “‘, ‘” + loc + “‘)”; stmt.executeUpdate(query); // 워크시트에 쿼리문 입력하기 System.out.println(query);

테스트

연결 – 인서트 – 연결해제

sql로 가서 확인해본다

DB에서 데이터 가져오기 메서드

stmt라는 워크시트 객체에 SELECT 쿼리문을 입력하고 실행시키는 작업이다

더보기 query = “SELECT name, loc FROM drugstore”; System.out.println(query); rs = stmt.executeQuery(query); // 워크시트에 쿼리문 입력하고 데이터 받기 while (rs.next()) { Info temp = new Info(rs.getString(1), rs.getString(2)); // 약국이름과 위치를 가진 객체 생성 storeInfos.add(temp); //어레이리스트에 객체 추가 } for (int i = 0; i < storeInfos.size(); i++) { // 약국 이름과 주소를 튜플 수만큼 출력 System.out.println(storeInfos.get(i).name + " : " + storeInfos.get(i).loc); } 테스트 연결 - 셀렉트 - 연결해제 DB 데이터 지우기 메서드 인서트와 마찬가지로 stmt객체에 DELETE문을 넣어서 실행시킨다 더보기 query = "DELETE drugstore WHERE name like '" + name + "'"; stmt.executeUpdate(query); System.out.println(query); 테스트 연결 - 딜리트 - 연결해제 sql에서도 확인해보자 이렇게 필요한 기능을 간단히 구현해보았다 좀 더 복잡한 기능구현은 추후에 따로 만들어 보기로 한다

Top 41 자바 Db 연동 프로젝트 16797 Good Rating This Answer

자바 MySQL 데이터베이스 연동 강좌 (How To Connect JAVA To MySQL Database)

자바 MySQL 데이터베이스 연동 강좌 (How To Connect JAVA To MySQL Database)

자바 DB 데이터베이스 연결하기(프로젝트 대비)

들어가기 전에

DB 유저 생성

유저에게 권한주기

유저 스키마 생성

테이블 생성

테이블에 데이터 넣기

오라클 라이브러리를 자바에 연결하기

java 코드 작성

Read More

Project

1프로그램

2프로그램 구성

3 프로그램 기능구현

4 프로그램 유효성 검사 입력값 오류와 확인

5 코드

Read More

태그

관련글

댓글0

전체 방문자

최근글

인기글

티스토리툴바

Read More

Binary World

JAVA CLASS 자바에 오라클 DB 연동하기(데이터 삽입) 본문

Read More

CATEGORIES

26 JDBC [OracleDB과 JAVA연동] MVC모델-(회원가입 로그인)

categoryApplication%20%EA%B0%9C%EB%B0%9CJAVA

티스토리툴바

Read More

Read More

TAG

관련글 관련글 더보기

티스토리툴바

Read More

See more articles in the same category here: Aodaithanhmai.com.vn/wiki.

더보기 query = “SELECT name, loc FROM drugstore”; System.out.println(query); rs = stmt.executeQuery(query); // 워크시트에 쿼리문 입력하고 데이터 받기 while (rs.next()) { Info temp = new Info(rs.getString(1), rs.getString(2)); // 약국이름과 위치를 가진 객체 생성 storeInfos.add(temp); //어레이리스트에 객체 추가 } for (int i = 0; i < storeInfos.size(); i++) { // 약국 이름과 주소를 튜플 수만큼 출력 System.out.println(storeInfos.get(i).name + " : " + storeInfos.get(i).loc); } 테스트 연결 - 셀렉트 - 연결해제 DB 데이터 지우기 메서드 인서트와 마찬가지로 stmt객체에 DELETE문을 넣어서 실행시킨다 더보기 query = "DELETE drugstore WHERE name like '" + name + "'"; stmt.executeUpdate(query); System.out.println(query); 테스트 연결 - 딜리트 - 연결해제 sql에서도 확인해보자 이렇게 필요한 기능을 간단히 구현해보았다 좀 더 복잡한 기능구현은 추후에 따로 만들어 보기로 한다 1.프로그램 개요 : GUI 프로그램(오라클 DB 연동, JFrame 활용) 주제 : 학원근처 맛집 관리프로그램 데이타베이스 => 정보 : 음식점 이름, 전화번호, 주소, 거리(도보), 메모(맛평가/추천메뉴 등)

프로그램 구현 기능(CRUD)

1) 저장

=> 이름, 전화번호, 주소, 거리(도보), 메모를 입력받아 저장

=> 전화번호에 대한 중복 검사

2) 수정

=> 이름을 입력받아 맛집정보 검색 : 검색된 정보가 없는 경우 메세지 출력

=> 이름, 전화번호, 주소, 거리(도보) 를 입력받아 변경

=> 메모 추가할 수 있도록

3) 삭제

=> 이름을 입력받아 맛집 정보 삭제 : 삭제할 정보가 없는 경우 메세지 출력

4) 검색

=> 이름 검색과 거리 검색

=> 거리(도보)를 입력받아 맛집 정보 검색 : 검색된 정보가 없는 경우 메세지 출력

=> 저장된 모든 정보 검색 가능

5) 정보에 대한 유효성 검사

2.프로그램 구성

1) 입력필드 :

정보 – 이름, 전화번호, 주소, 거리, 메모

검색값 – 이름, 거리(‘숫자’+’분’)로 검색

2) 버튼 :

정보저장, 정보변경, 정보삭제, 맛집검색 버튼 상단배치

입력값을 안 넣고 맛집검색 버튼을 누르면 전체 데이터 출력

이름 필드에 맛집 이름을 입력하고 맛집검색 버튼 눌러 사용

검색 필드에 거리를 입력하고 맛집검색 버튼을 눌러 사용

3) 테이블 :

오라클DB 연동

접속시 전체 데이터 출력

메모값 제외 테이블 내용을 가운데로 정렬해줌

테이블 구성 –

이름 : NOT NULL

전화번호 : PRIMARY KEY

주소 : 생략가능

거리 : NOT NULL

메모 : 생략가능

3. 프로그램 기능구현

1) 저장

2) 수정

3) 검색

이름 검색

거리 검색

-전체 검색

4) 삭제

4. 프로그램 유효성 검사 : 입력값 오류와 확인

5. 코드

DB

CREATE TABLE LUNCHMANAGE ( NAME VARCHAR2(30) NOT NULL, PHONE VARCHAR2(20) PRIMARY KEY, ADDRESS VARCHAR2(40), DISTANCE VARCHAR2(10) NOT NULL, MEMO VARCHAR2(80) ); DESC LUNCHMANAGE; INSERT INTO LUNCHMANAGE VALUES(‘덕이닭찜’,’02-552-0757′,’강남구 테헤란로4길 46′,’10분’,’닭갈비+묵사발+볶음밥 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘봉된장’,’02-555-5300′,’강남구 테헤란로4길 38-3′,’5분’,’밥 맛있는데 양 적음’); INSERT INTO LUNCHMANAGE VALUES(‘알라보’,’0507-1318-0939′,’강남구 테헤란로 129′,’6분’,’매장이 작고 사람이 많다’); INSERT INTO LUNCHMANAGE VALUES(‘석기정부대찌개’,’02-561-6661′,’강남구 테헤란로8길 11-8′,’4분’,’양많고 맛있다, 메뉴는 2개뿐’); INSERT INTO LUNCHMANAGE VALUES(‘대독장’,’02-552-7745′,’강남구 논현로85길 59′,’5분’,’계란후라이무한, 돼지고기는 별로’); INSERT INTO LUNCHMANAGE VALUES(‘보슬보슬’,’02-6014-1245′,’강남구 테헤란로8길 22′,’5분’,’양많음, 마늘칩떡볶이, 베이컨김밥 맛있당’); INSERT INTO LUNCHMANAGE VALUES(‘나이스샤워’,’02-558-6008′,’강남구 테헤란로10길 25′,’5분’,’웨이팅있음, 바질토마토 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘이필녀국밥’,’02-561-7760′,’강남구 테헤란로25길 42′,’12분’,’인생 뼈해장국집, 가격도 7000원’); INSERT INTO LUNCHMANAGE VALUES(‘탄탄면공방’,’0507-1346-2229′,’강남구 테헤란로4길 40′,’8분’,’향신료 강하지않고 국물 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘안사부’,’02-558-1769′,’강남구 테헤란로8길 32′,’6분’,’요일별 메뉴할인, 짬뽕 괜찮음’); SELECT * FROM LUNCHMANAGE; COMMIT;

JAVA

LUNCHMANAGEDTO

package CrudProject ; public class LunchManageDTO { private String name ; private String phone ; private String address ; private String distance ; private String memo ; public LunchManageDTO ( ) { } public LunchManageDTO ( String name , String phone , String address , String distance , String memo ) { super ( ) ; this . name = name ; this . phone = phone ; this . address = address ; this . distance = distance ; this . memo = memo ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } public String getPhone ( ) { return phone ; } public void setPhone ( String phone ) { this . phone = phone ; } public String getAddress ( ) { return address ; } public void setAddress ( String address ) { this . address = address ; } public String getDistance ( ) { return distance ; } public void setDistance ( String distance ) { this . distance = distance ; } public String getMemo ( ) { return memo ; } public void setMemo ( String memo ) { this . memo = memo ; } }

LUNCHMANAGEDAO

package CrudProject ; import java . sql . Connection ; import java . sql . PreparedStatement ; import java . sql . ResultSet ; import java . sql . SQLException ; import java . util . ArrayList ; import java . util . List ; public class LunchManageDAO extends JdbcDAO { private static LunchManageDAO _dao ; private LunchManageDAO ( ) { } static { _dao = new LunchManageDAO ( ) ; } public static LunchManageDAO getDAO ( ) { return _dao ; } public int insertLunchManage ( LunchManageDTO lunchmanage ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “insert into lunchmanage values(?,?,?,?,?)” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , lunchmanage . getName ( ) ) ; pstmt . setString ( 2 , lunchmanage . getPhone ( ) ) ; pstmt . setString ( 3 , lunchmanage . getAddress ( ) ) ; pstmt . setString ( 4 , lunchmanage . getDistance ( ) ) ; pstmt . setString ( 5 , lunchmanage . getMemo ( ) ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]insertlunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public int updateLunchManage ( LunchManageDTO lunchmanage ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “update lunchmanage set name=?,address=?,distance=?,memo=? where phone=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , lunchmanage . getName ( ) ) ; pstmt . setString ( 2 , lunchmanage . getAddress ( ) ) ; pstmt . setString ( 3 , lunchmanage . getDistance ( ) ) ; pstmt . setString ( 4 , lunchmanage . getMemo ( ) ) ; pstmt . setString ( 5 , lunchmanage . getPhone ( ) ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]updatelunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public int deleteLunchManage ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “delete from lunchmanage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]deletelunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public LunchManageDTO selectNameLunchManage ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; LunchManageDTO lunchmanage = null ; try { con = getConnection ( ) ; String sql = “select * from lunchmanage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rs = pstmt . executeQuery ( ) ; if ( rs . next ( ) ) { lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; } } catch ( SQLException e ) { System . out . println ( “[에러]selectNameLunchManage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return lunchmanage ; } public List < LunchManageDTO > selectDistanceLunchManageList ( String distance ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from LunchManage where distance=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , distance ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( Exception e ) { System . out . println ( “[에러] =selectDistanceLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } public List < LunchManageDTO > selectNameManageList ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from LunchManage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( Exception e ) { System . out . println ( “[에러] =selectDistanceLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } public List < LunchManageDTO > selectAllLunchManagerList ( ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from lunchmanage order by name” ; pstmt = con . prepareStatement ( sql ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( SQLException e ) { System . out . println ( “[에러] =selectAllLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } }

LUNCHMANAGEGUIAPP

개인 프로젝트 – oracle DB를 연동한 GUI프로그램

1.프로그램

개요 : GUI 프로그램(오라클 DB 연동, JFrame 활용)

주제 : 학원근처 맛집 관리프로그램

데이타베이스

=> 정보 : 음식점 이름, 전화번호, 주소, 거리(도보), 메모(맛평가/추천메뉴 등)

프로그램 구현 기능(CRUD)

1) 저장

=> 이름, 전화번호, 주소, 거리(도보), 메모를 입력받아 저장

=> 전화번호에 대한 중복 검사

2) 수정

=> 이름을 입력받아 맛집정보 검색 : 검색된 정보가 없는 경우 메세지 출력

=> 이름, 전화번호, 주소, 거리(도보) 를 입력받아 변경

=> 메모 추가할 수 있도록

3) 삭제

=> 이름을 입력받아 맛집 정보 삭제 : 삭제할 정보가 없는 경우 메세지 출력

4) 검색

=> 이름 검색과 거리 검색

=> 거리(도보)를 입력받아 맛집 정보 검색 : 검색된 정보가 없는 경우 메세지 출력

=> 저장된 모든 정보 검색 가능

5) 정보에 대한 유효성 검사

2.프로그램 구성

1) 입력필드 :

정보 – 이름, 전화번호, 주소, 거리, 메모

검색값 – 이름, 거리(‘숫자’+’분’)로 검색

2) 버튼 :

정보저장, 정보변경, 정보삭제, 맛집검색 버튼 상단배치

입력값을 안 넣고 맛집검색 버튼을 누르면 전체 데이터 출력

이름 필드에 맛집 이름을 입력하고 맛집검색 버튼 눌러 사용

검색 필드에 거리를 입력하고 맛집검색 버튼을 눌러 사용

3) 테이블 :

오라클DB 연동

접속시 전체 데이터 출력

메모값 제외 테이블 내용을 가운데로 정렬해줌

테이블 구성 –

이름 : NOT NULL

전화번호 : PRIMARY KEY

주소 : 생략가능

거리 : NOT NULL

메모 : 생략가능

3. 프로그램 기능구현

1) 저장

2) 수정

3) 검색

이름 검색

거리 검색

-전체 검색

4) 삭제

4. 프로그램 유효성 검사 : 입력값 오류와 확인

5. 코드

DB

CREATE TABLE LUNCHMANAGE ( NAME VARCHAR2(30) NOT NULL, PHONE VARCHAR2(20) PRIMARY KEY, ADDRESS VARCHAR2(40), DISTANCE VARCHAR2(10) NOT NULL, MEMO VARCHAR2(80) ); DESC LUNCHMANAGE; INSERT INTO LUNCHMANAGE VALUES(‘덕이닭찜’,’02-552-0757′,’강남구 테헤란로4길 46′,’10분’,’닭갈비+묵사발+볶음밥 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘봉된장’,’02-555-5300′,’강남구 테헤란로4길 38-3′,’5분’,’밥 맛있는데 양 적음’); INSERT INTO LUNCHMANAGE VALUES(‘알라보’,’0507-1318-0939′,’강남구 테헤란로 129′,’6분’,’매장이 작고 사람이 많다’); INSERT INTO LUNCHMANAGE VALUES(‘석기정부대찌개’,’02-561-6661′,’강남구 테헤란로8길 11-8′,’4분’,’양많고 맛있다, 메뉴는 2개뿐’); INSERT INTO LUNCHMANAGE VALUES(‘대독장’,’02-552-7745′,’강남구 논현로85길 59′,’5분’,’계란후라이무한, 돼지고기는 별로’); INSERT INTO LUNCHMANAGE VALUES(‘보슬보슬’,’02-6014-1245′,’강남구 테헤란로8길 22′,’5분’,’양많음, 마늘칩떡볶이, 베이컨김밥 맛있당’); INSERT INTO LUNCHMANAGE VALUES(‘나이스샤워’,’02-558-6008′,’강남구 테헤란로10길 25′,’5분’,’웨이팅있음, 바질토마토 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘이필녀국밥’,’02-561-7760′,’강남구 테헤란로25길 42′,’12분’,’인생 뼈해장국집, 가격도 7000원’); INSERT INTO LUNCHMANAGE VALUES(‘탄탄면공방’,’0507-1346-2229′,’강남구 테헤란로4길 40′,’8분’,’향신료 강하지않고 국물 맛있다’); INSERT INTO LUNCHMANAGE VALUES(‘안사부’,’02-558-1769′,’강남구 테헤란로8길 32′,’6분’,’요일별 메뉴할인, 짬뽕 괜찮음’); SELECT * FROM LUNCHMANAGE; COMMIT;

JAVA

LUNCHMANAGEDTO

package CrudProject ; public class LunchManageDTO { private String name ; private String phone ; private String address ; private String distance ; private String memo ; public LunchManageDTO ( ) { } public LunchManageDTO ( String name , String phone , String address , String distance , String memo ) { super ( ) ; this . name = name ; this . phone = phone ; this . address = address ; this . distance = distance ; this . memo = memo ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } public String getPhone ( ) { return phone ; } public void setPhone ( String phone ) { this . phone = phone ; } public String getAddress ( ) { return address ; } public void setAddress ( String address ) { this . address = address ; } public String getDistance ( ) { return distance ; } public void setDistance ( String distance ) { this . distance = distance ; } public String getMemo ( ) { return memo ; } public void setMemo ( String memo ) { this . memo = memo ; } }

LUNCHMANAGEDAO

package CrudProject ; import java . sql . Connection ; import java . sql . PreparedStatement ; import java . sql . ResultSet ; import java . sql . SQLException ; import java . util . ArrayList ; import java . util . List ; public class LunchManageDAO extends JdbcDAO { private static LunchManageDAO _dao ; private LunchManageDAO ( ) { } static { _dao = new LunchManageDAO ( ) ; } public static LunchManageDAO getDAO ( ) { return _dao ; } public int insertLunchManage ( LunchManageDTO lunchmanage ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “insert into lunchmanage values(?,?,?,?,?)” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , lunchmanage . getName ( ) ) ; pstmt . setString ( 2 , lunchmanage . getPhone ( ) ) ; pstmt . setString ( 3 , lunchmanage . getAddress ( ) ) ; pstmt . setString ( 4 , lunchmanage . getDistance ( ) ) ; pstmt . setString ( 5 , lunchmanage . getMemo ( ) ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]insertlunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public int updateLunchManage ( LunchManageDTO lunchmanage ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “update lunchmanage set name=?,address=?,distance=?,memo=? where phone=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , lunchmanage . getName ( ) ) ; pstmt . setString ( 2 , lunchmanage . getAddress ( ) ) ; pstmt . setString ( 3 , lunchmanage . getDistance ( ) ) ; pstmt . setString ( 4 , lunchmanage . getMemo ( ) ) ; pstmt . setString ( 5 , lunchmanage . getPhone ( ) ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]updatelunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public int deleteLunchManage ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; int rows = 0 ; try { con = getConnection ( ) ; String sql = “delete from lunchmanage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rows = pstmt . executeUpdate ( ) ; } catch ( SQLException e ) { System . out . println ( “[에러]deletelunchmanage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return rows ; } public LunchManageDTO selectNameLunchManage ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; LunchManageDTO lunchmanage = null ; try { con = getConnection ( ) ; String sql = “select * from lunchmanage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rs = pstmt . executeQuery ( ) ; if ( rs . next ( ) ) { lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; } } catch ( SQLException e ) { System . out . println ( “[에러]selectNameLunchManage() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt ) ; } return lunchmanage ; } public List < LunchManageDTO > selectDistanceLunchManageList ( String distance ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from LunchManage where distance=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , distance ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( Exception e ) { System . out . println ( “[에러] =selectDistanceLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } public List < LunchManageDTO > selectNameManageList ( String name ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from LunchManage where name=?” ; pstmt = con . prepareStatement ( sql ) ; pstmt . setString ( 1 , name ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( Exception e ) { System . out . println ( “[에러] =selectDistanceLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } public List < LunchManageDTO > selectAllLunchManagerList ( ) { Connection con = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; List < LunchManageDTO > lunchmanagerList = new ArrayList < LunchManageDTO > ( ) ; try { con = getConnection ( ) ; String sql = “select * from lunchmanage order by name” ; pstmt = con . prepareStatement ( sql ) ; rs = pstmt . executeQuery ( ) ; while ( rs . next ( ) ) { LunchManageDTO lunchmanage = new LunchManageDTO ( ) ; lunchmanage . setName ( rs . getString ( “name” ) ) ; lunchmanage . setPhone ( rs . getString ( “phone” ) ) ; lunchmanage . setAddress ( rs . getString ( “address” ) ) ; lunchmanage . setDistance ( rs . getString ( “distance” ) ) ; lunchmanage . setMemo ( rs . getString ( “memo” ) ) ; lunchmanagerList . add ( lunchmanage ) ; } } catch ( SQLException e ) { System . out . println ( “[에러] =selectAllLunchManageList() 메소드의 SQL 오류 = ” + e . getMessage ( ) ) ; } finally { close ( con , pstmt , rs ) ; } return lunchmanagerList ; } }

LUNCHMANAGEGUIAPP

[Java] 예제 – DB연동 회원관리 프로그램 v1.1(콘솔,JDBC) , jxl라이브러리 활용하여 회원목록 엑셀로 출력

[Java] 예제 – DB연동 회원관리 프로그램 v1.1(콘솔,JDBC) , jxl라이브러리 활용하여 회원목록 엑셀로 출력 자바복습[2독] / 자바과정-기초 https://blog.naver.com/javaking75/140190303129 첨부파일 (1) [SQL문] –테이블생성

CREATE TABLE TB_Member02 (

m_no varchar2 ( 4 ) PRIMARY KEY , –회원등록번호

m_name varchar2 ( 20 ) NOT NULL , –이름

m_ssn varchar2 ( 14 ) NOT NULL , –주민번호

m_phoneNum varchar2 ( 13 ) , –연락처

m_registdate DATE DEFAULT sysdate — 등록날짜

) ;

–시퀀스생성

CREATE SEQUENCE seq_member02_no;

–테이블, 시퀀스 삭제

DROP TABLE TB_Member02;

DROP SEQUENCE seq_member02_no;

–결과 조회

SELECT * FROM TB_Member02;

–회원 등록

INSERT INTO TB_Member02 VALUES ( ‘0001’ , ‘자바킹’ , ‘123456-1234567’ , ‘010-0000-0000’ ,sysdate ) ;

INSERT INTO TB_Member02 VALUES ( LPAD ( seq_member02_no. NEXTVAL , 4 , ‘0’ ) , ‘자바킹’ , ‘123456-1234567’ , ‘010-0000-0000’ ,sysdate ) ;

–회원 리스트 ( 최근 등록순 )

SELECT m_no, m_name, m_ssn, m_phoneNum, m_registdate

FROM TB_Member02 ORDER BY m_registdate DESC ;

–회원번호로 검색:

SELECT m_no, m_name, m_ssn, m_phoneNum, m_registdate

FROM TB_Member02 WHERE m_no = ‘0001’ ;

–회원 삭제

DELETE FROM TB_Member02;

DELETE FROM TB_Member02 WHERE m_no = ‘0001’ ;

–회원 수정

SELECT m_no, m_name, m_ssn, m_phoneNum, m_registdate

FROM TB_Member02 WHERE m_no = ‘0001’ ;

UPDATE TB_Member02 SET m_name= ‘자바신’ , m_ssn= ‘123456-1234567’ , m_phoneNum= ‘010-1111-1111’ WHERE m_no= ‘0001’ ;

[코드] MemberDTO.java – 한명의 회원의 정보를 관리할 목적으로 작성한 클래스 import java.util.Formatter ; public class MemberDTO { private String no; private String name; private String ssn; private String phoneNum; private String registdate; //기본생성자 public MemberDTO ( ) { } //생성자 public MemberDTO ( name, ) { MemberDTO String name, String ssn, String phoneNum this . name = name; this . ssn = ssn; this . phoneNum = phoneNum; } //생성자 public MemberDTO ( no, MemberDTO String no, String name, String ssn, String phoneNum, ) { String registdate super ( ) ; this . no = no; this . name = name; this . ssn = ssn; this . phoneNum = phoneNum; this . registdate = registdate; } //getter, setter public ( ) { String getNo return no; } public void setNo ( no ) { setNo String no this . no = no; } public ( ) { String getName return name; } public void setName ( name ) { setName String name this . name = name; } public ( ) { String getSsn return ssn; } public void setSsn ( ssn ) { setSsn String ssn this . ssn = ssn; } public ( ) { String getPhoneNum return phoneNum; } public void setPhoneNum ( phoneNum ) { setPhoneNum String phoneNum this . phoneNum = phoneNum; } public ( ) { String getRegistdate return registdate; } public void setRegistdate ( registdate ) { setRegistdate String registdate /*SimpleDateFormat textFormat = new SimpleDateFormat(“yyyy-MM-dd”); try { registdate = textFormat.format(textFormat.parse(registdate)); } catch (ParseException e) {}*/ this . registdate = registdate; } @Override public ( ) { String toString Formatter fm = new Formatter ( ) ; format ( “%5s \t %-7s \t %-16s \t %-14s \t %-14s” , no, name,ssn, phoneNum,registdate ) . toString ( ) ; String meminfo = fm., no, name,ssn, phoneNum,registdate return meminfo; } public ( ) { String getInfo new StringBuffer ( ) ; StringBuffer sb = sb. append ( ” \r

” ) ; sb. append ( “[ ” +no+ ” ] 회원님의 정보====

” ) ; sb. append ( “이 름 : ” +name+ ”

” ) ; sb. append ( “주민번호 : ” +ssn+ ”

” ) ; sb. append ( “전화번호 : ” +phoneNum+ ”

” ) ; sb. append ( “등록일자 : ” +registdate+ ”

” ) ; return sb. toString ( ) ; } } MemberDAO.java – 데이터베이스와 연계하여 작업을 처리하는 클래스. import java.sql.CallableStatement ; import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.PreparedStatement ; import java.sql.ResultSet ; import java.sql.SQLException ; import java.util.ArrayList ; import java.util.List ; public class MemberDAO { private static Connection conn; private PreparedStatement pstmt; private CallableStatement cstmt; private ResultSet rs; //기본생성자 public MemberDAO ( ) { } private void getConnection ( ) throws ClassNotFoundException , SQLException { getConnection if ( conn == null ) { //dbConn이 null이면 Connection 객체 얻어오기.. //접속정보 “jdbc:oracle:thin:@192.168.0.3:1521:orcl” ; String url = “scott” ; String user = “scott” ; String pw = //JDBC드라이버 로드 Class . forName ( “oracle.jdbc.driver.OracleDriver” ) ; //오라클(DBMS)에 연결하여 Connection 객체 얻기. getConnection ( url,user,pw ) ; conn = DriverManager url,user,pw } } /** * 회원 등록하기 */ public boolean insertMember ( MemberDTO dto ) { boolean result = false ; try { getConnection ( ) ; String sql = “INSERT INTO TB_Member02 VALUES (LPAD(seq_memeber02_no.nextval,4,’0′),:name,:ssn,:phoneNum,sysdate)” ; prepareStatement ( sql ) ; PreparedStatement pstmt = conn.sql pstmt. setString ( 1 ,dto. getName ( ) ) ; pstmt. setString ( 2 ,dto. getSsn ( ) ) ; pstmt. setString ( 3 ,dto. getPhoneNum ( ) ) ; int r = pstmt. executeUpdate ( ) ; if ( r> 0 ) result = true ; } catch ( Exception e ) { System . out . println ( “예외발생:insertMember()=> ” +e. getMessage ( ) ) ; +e. } finally { dbClose ( ) ; } return result; } /** * 회원번호에 해당하는 회원정보 보기 */ public MemberDTO getMember ( no ) { MemberDTO getMember String no MemberDTO dto = null ; try { getConnection ( ) ; String sql = “SELECT m_no, m_name, m_ssn, m_phoneNum, m_registdate FROM TB_Member02 WHERE m_no = ?” ; prepareStatement ( sql ) ; PreparedStatement pstmt = conn.sql pstmt. setString ( 1 , no ) ; executeQuery ( ) ; ResultSet r = pstmt. if ( r. next ( ) ) { getString ( “m_no” ) ; String m_no = r. getString ( “m_name” ) ; String m_name = r. getString ( “m_ssn” ) ; String m_ssn = r. getString ( “m_phoneNum” ) ; String m_phoneNum = r. getDate ( “m_registdate” ) . toString ( ) ; String m_registdate = r. dto = new MemberDTO ( m_no, m_name, m_ssn, m_phoneNum, m_registdate ) ; } } catch ( Exception e ) { System . out . println ( “예외발생:deleteMember()=> ” +e. getMessage ( ) ) ; +e. } finally { dbClose ( ) ; } return dto; } /** * 저장된 회원 목록 보기 */ public List getMemberList ( ) { List list = new ArrayList ( ) ; try { getConnection ( ) ; “SELECT m_no, m_name, m_ssn, m_phoneNum, m_registdate FROM TB_Member02 ORDER BY m_registdate DESC” ; String sql = prepareStatement ( sql ) ; PreparedStatement pstmt = conn.sql executeQuery ( ) ; ResultSet r = pstmt. while ( r. next ( ) ) { getString ( “m_no” ) ; String m_no = r. getString ( “m_name” ) ; String m_name = r. getString ( “m_ssn” ) ; String m_ssn = r. getString ( “m_phoneNum” ) ; String m_phoneNum = r. getDate ( “m_registdate” ) . toString ( ) ; String m_registdate = r. list. add ( new MemberDTO ( m_no, m_name, m_ssn, m_phoneNum, m_registdate ) ) ; } } catch ( Exception e ) { System . out . println ( “예외발생:getMemberList()=> ” +e. getMessage ( ) ) ; +e. } finally { dbClose ( ) ; } return list; } /** * 회원 수정 */ public boolean updateMember ( MemberDTO dto ) { boolean result = false ; try { getConnection ( ) ; “UPDATE TB_Member02 SET m_name=:name , m_ssn=:ssn , m_phoneNum=:phoneNum WHERE m_no=:no” ; String sql = prepareStatement ( sql ) ; PreparedStatement pstmt = conn.sql pstmt. setString ( 1 ,dto. getName ( ) ) ; pstmt. setString ( 2 ,dto. getSsn ( ) ) ; pstmt. setString ( 3 ,dto. getPhoneNum ( ) ) ; pstmt. setString ( 4 ,dto. getNo ( ) ) ; int r = pstmt. executeUpdate ( ) ; if ( r> 0 ) result = true ; } catch ( Exception e ) { System . out . println ( “예외발생:updateMember()=> ” +e. getMessage ( ) ) ; +e. } finally { dbClose ( ) ; } return result; } /** * 회원 삭제 */ public boolean deleteMember ( id ) { deleteMember String id boolean result = false ; try { getConnection ( ) ; “DELETE FROM TB_Member02 WHERE m_no = ?” ; String sql = prepareStatement ( sql ) ; PreparedStatement pstmt = conn.sql pstmt. setString ( 1 , id ) ; int r = pstmt. executeUpdate ( ) ; if ( r> 0 ) result = true ; } catch ( Exception e ) { System . out . println ( “예외발생:deleteMember()=> ” +e. getMessage ( ) ) ; +e. } finally { dbClose ( ) ; } return result; } //deleteMember()————– /**DB연결 해제(닫기)*/ public void dbClose ( ) { if ( rs != null ) { try { rs. close ( ) ; } catch ( SQLException e ) { System . out . println ( “예외:ResultSet객체 close():” + e. getMessage ( ) ) ; + e. } } if ( pstmt != null ) { try { pstmt. close ( ) ; } catch ( SQLException e ) { System . out . println ( “예외:PreparedStatement객체 close():” + e. getMessage ( ) ) ; + e. } } if ( cstmt != null ) { try { cstmt. close ( ) ; } catch ( SQLException e ) { System . out . println ( “예외:CallableStatement객체 close():” + e. getMessage ( ) ) ; + e. } } if ( conn != null ) { try { conn. close ( ) ; } catch ( SQLException e ) { System . out . println ( “예외:Connection객체 close():” + e. getMessage ( ) ) ; + e. } } conn = null ; } //dbClose()——— } MemberProc.java import java.io.File ; import java.io.IOException ; import java.util.Collections ; import java.util.Formatter ; import java.util.Iterator ; import java.util.List ; import java.util.Map ; import java.util.Scanner ; import java.util.Set ; import java.util.TreeMap ; import java.util.TreeSet ; import jxl.Sheet ; import jxl.Workbook ; import jxl.format.Alignment ; import jxl.format.Colour ; import jxl.read.biff.BiffException ; import jxl.write.Label ; import jxl.write.WritableCellFormat ; import jxl.write.WritableFont ; import jxl.write.WritableSheet ; import jxl.write.WritableWorkbook ; import jxl.write.WriteException ; import jxl.write.biff.RowsExceededException ; public class MemberProc { MemberDAO dao; //기본생성자 public MemberProc ( ) { dao = new MemberDAO ( ) ; } /** * 회원 등록처리 */ public void insertMember ( ) { new Scanner ( System . in ) ; Scanner scn =Scanner System . out . println ( “회원정보를 입력해주세요.” ) ; System . out . print ( “▶이름 : ” ) ; //String name = scn.nextLine(); ( scn ) ; String name = reInputscn System . out . print ( “▶주민번호 : ” ) ; //String ssn = scn.nextLine(); ( scn ) ; String ssn = reInputscn System . out . print ( “▶연락처 : ” ) ; //String phoneNum = scn.nextLine(); ( scn ) ; String phoneNum = reInputscn MemberDTO dto = new MemberDTO ( name, ssn, phoneNum ) ; boolean r = dao. insertMember ( dto ) ; //입력받은 데이터 추가 if ( r ) { System . out . println ( “회원등록이 정상적으로 완료되었습니다.” ) ; } else { System . out . println ( “회원등록이 정상적으로 이루지지 않았습니다.” ) ; } } /** * 저장된 회원 목록 보기 */ public void showMemberList ( ) { List list = dao. getMemberList ( ) ; System . out . println ( ” Member List” ) ; System . out . println ( “============================================================================” ) ; if ( list!=null&&list. size ( ) > 0 ) { System . out . println ( “reg.No \t 이름 \t \t 주민번호 \t \t 연락처 \t \t 등록일” ) ; System . out . println ( “============================================================================” ) ; for ( MemberDTO dto : list ) { System . out . println ( dto ) ; dto } } else { System . out . println ( “저장된 데이터가 없습니다. ” ) ; } System . out . println ( “====================================================================총 ” + ( ( list== null ) ? “0” :list. size ( ) ) + ” 명=

” ) ; list==:list. } /** * 회원 수정. */ public void updateMember ( ) { new Scanner ( System . in ) ; Scanner scn =Scanner System . out . println ( “수정할 회원의 회원등록번호를 입력해주세요” ) ; System . out . print ( “▶” ) ; nextLine ( ) ; String no = scn. MemberDTO dto = dao. getMember ( no ) ; if ( dto!= null ) { System . out . println ( dto. getInfo ( ) ) ; dto. System . out . println ( “수정작업을 계속하시겠습니까?(Y/N)” ) ; nextLine ( ) ; String input = scn. if ( input. equalsIgnoreCase ( “y” ) ) { System . out . println ( “##입력을 하시지않으면 기존의 정보가 그대로 유지됩니다.” ) ; System . out . print ( “▶수정할 이름 : ” ) ; nextLine ( ) ; String name = scn. if ( name. trim ( ) . equals ( “” ) ) name=dto. getName ( ) ; System . out . print ( “▶수정할 주민번호 : ” ) ; nextLine ( ) ; String ssn = scn. if ( ssn. trim ( ) . equals ( “” ) ) ssn=dto. getSsn ( ) ; System . out . print ( “▶수정할 전화번호 : ” ) ; nextLine ( ) ; String phoneNum = scn. if ( phoneNum. trim ( ) . equals ( “” ) ) phoneNum=dto. getPhoneNum ( ) ; dto = new MemberDTO ( no, name, ssn, phoneNum,dto. getRegistdate ( ) ) ; boolean r = dao. updateMember ( dto ) ; if ( r ) { System . out . println ( “회원의 정보가 다음과 같이 수정되었습니다.” ) ; System . out . println ( dto. getInfo ( ) ) ; dto. } else { System . out . println ( “회원의 정보가 정상적으로 수정 되지 않았습니다.” ) ; } } else { System . out . println ( “수정 작업을 취소하였습니다.” ) ; } } else { System . out . println ( “입력하신 회원등록번호에 해당하는 회원이 존재하지 않습니다.” ) ; } } /** * 회원 삭제 */ public void deleteMember ( ) { new Scanner ( System . in ) ; Scanner scn =Scanner System . out . println ( “삭제할 회원의 회원등록번호를 입력해주세요” ) ; nextLine ( ) ; String no = scn. MemberDTO dto = dao. getMember ( no ) ; if ( dto!= null ) { System . out . println ( dto. getInfo ( ) ) ; dto. System . out . println ( “위 회원의 정보를 정말로 삭제하시겠습니까?(Y/N)” ) ; nextLine ( ) ; String input = scn. if ( input. equalsIgnoreCase ( “y” ) ) { boolean r = dao. deleteMember ( no ) ; if ( r ) { System . out . println ( no+ “회원의 정보가 정상적으로 삭제되었습니다.” ) ; no+ } else { System . out . println ( “회원의 정보가 정상적으로 삭제 되지 않았습니다.” ) ; } } else { System . out . println ( “삭제 작업을 취소하였습니다.” ) ; } } else { System . out . println ( “입력하신 회원등록번호에 해당하는 회원이 존재하지 않습니다.” ) ; } } /** * 회원리스트 외부로 출력 (엑셀로 출력, jxl라이브러리 사용) */ public void exportMemberList ( ) { List list = dao. getMemberList ( ) ; useJxlWrite ( list ) ; } public void useJxlWrite ( List list ) { WritableWorkbook workbook= null ; try { createWorkbook ( new File ( “data.xls” ) ) ; //워크북 생성 workbook = Workbook. WritableSheet sheet = workbook. createSheet ( “Member List” , 0 ) ; //시트생성 //열 머리 셀 포맷 WritableCellFormat ColumNameFormat = new WritableCellFormat ( ) ; // 열머리 셀 포멧 생성 ColumNameFormat. setAlignment ( Alignment. CENTRE ) ; // 셀 가운데 정렬 ColumNameFormat. setBackground ( Colour. GOLD ) ; // 셀 배경색 설정. WritableFont arial10fontBold = new WritableFont ( WritableFont. ARIAL , 10 ,WritableFont. BOLD ) ; //폰트서식관련객체 생성. new WritableFont(폰트이름, 폰트크기,폰트굵기지정) ColumNameFormat. setFont ( arial10fontBold ) ; //설정한 폰트서식을 셀포맷에 설정. // Sheet의 컬럼 넓이 설정 , setCloumnView(몇번째 컬럼, 넓이) sheet. setColumnView ( 0 , 20 ) ; // sheet의 0번째 컬럼의 넓이 설정. sheet. setColumnView ( 1 , 15 ) ; // sheet의 1번째 컬럼의 넓이 설정 sheet. setColumnView ( 2 , 20 ) ; // sheet의 2번째 컬럼의 넓이 설정 sheet. setColumnView ( 3 , 20 ) ; // sheet의 3번째 컬럼의 넓이 설정 sheet. setColumnView ( 4 , 20 ) ; // sheet의 3번째 컬럼의 넓이 설정 // 열머리 Cell생성후 sheet 추가 addCell ( new Label ( 0 , 0 , “reg.No” ,ColumNameFormat ) ) ; //라벨(열,행,”문장”,포멧) sheet.,ColumNameFormat addCell ( new Label ( 1 , 0 , “이름” ,ColumNameFormat ) ) ; sheet.,ColumNameFormat addCell ( new Label ( 2 , 0 , “주민번호” ,ColumNameFormat ) ) ; sheet.,ColumNameFormat addCell ( new Label ( 3 , 0 , “연락처” ,ColumNameFormat ) ) ; sheet.,ColumNameFormat addCell ( new Label ( 4 , 0 , “등록일” ,ColumNameFormat ) ) ; sheet.,ColumNameFormat int rowNum = 1 ; for ( MemberDTO vo : list ) { try { //jxl.write.Label.Label(int c, int r, String cont) : //열, 행, 내용 new Label ( 0 ,rowNum, vo. getNo ( ) ) ; Label lblNo =,rowNum, vo. new Label ( 1 ,rowNum,vo. getName ( ) ) ; Label lblName =,rowNum,vo. new Label ( 2 ,rowNum, vo. getSsn ( ) ) ; Label lblSsn =,rowNum, vo. new Label ( 3 ,rowNum,vo. getPhoneNum ( ) ) ; Label lblPhoneNum =,rowNum,vo. new Label ( 4 ,rowNum,vo. getRegistdate ( ) ) ; Label lblRegistDate =,rowNum,vo. //셀에 라벨 추가 sheet. addCell ( lblNo ) ; sheet. addCell ( lblName ) ; sheet. addCell ( lblSsn ) ; sheet. addCell ( lblPhoneNum ) ; sheet. addCell ( lblRegistDate ) ; } catch ( Exception e ) { System . out . println ( “예외발생: ” +e. getMessage ( ) ) ; +e. } rowNum++; } workbook. write ( ) ; //준비된 정보를 엑셀 포멧에 맞게 작성 즉, 엑셀 파일로 쓰기 System . out . println ( “회원목록이 엑셀로 저장되었습니다.” ) ; } catch ( Exception e ) { System . out . println ( “예외발생: ” +e. getMessage ( ) ) ; +e. } finally { try { if ( workbook!= null ) workbook. close ( ) ; //닫기 , 처리 후 메모리에서 해제 처리 } catch ( Exception e ) { System . out . println ( “예외발생: ” +e. getMessage ( ) ) ; +e. } } //catch —————- } //writeJxl()—————- /** * 공백입력시 재입력, 테스트 메소드… */ public ( Scanner scn ) { String reInputScanner scn “” ; String str= while ( true ) { str = scn. nextLine ( ) ; if ( ! ( str== null || str. trim ( ) . equals ( “” ) ) ) { break ; } else { System . out . println ( “공백은 입력하실수없습니다. 올바른값을 입력해주세요!” ) ; System . out . print ( “▶” ) ; } } return str; } } MemberManagement.java – 실행클래스 import java.util.InputMismatchException ; import java.util.Scanner ; public class MemberManagement { public static void main ( String [ ] args ) { mainargs MemberProc mm = new MemberProc ( ) ; //MemberProc객체 생성 while ( true ) { System . out . println ( ) ; System . out . println ( “============== 멤버 관리 프로그램 ==============” ) ; System . out . println ( “1. 회원목록” ) ; System . out . println ( “2. 회원등록 3. 회원삭제 4. 회원정보 수정” ) ; System . out . println ( “5. 엑셀저장” ) ; System . out . println ( “6. 종료” ) ; System . out . println ( “============== aaaaaaaaaaaaaaaaaa ==============” ) ; System . out . print ( “메뉴를 입력하세요 : ” ) ; = new Scanner ( System . in ) ; Scanner scnScanner int num = 0 ; try { num = scn. nextInt ( ) ; if ( ! ( num > 0 && num < 7 ) ) { //1~6외의 숫자가 입력되면 예외 강제 발생 throw new InputMismatchException ( ) ; } } catch ( InputMismatchException e ) { System . out . println ( "입력된 값이 잘못되었습니다. [1-6] 메뉴늘 선택해주세요!" ) ; } switch ( num ) { case 1 : mm. showMemberList ( ) ; //회원목록 break ; case 2 : mm. insertMember ( ) ; //회원 등록 break ; case 3 : mm. deleteMember ( ) ; //회원 삭제 break ; case 4 : mm. updateMember ( ) ; //회원 수정 break ; case 5 : mm. exportMemberList ( ) ; //내보내기 break ; case 6 : System . out . println ( "프로그램을 종료합니다." ) ; System . exit ( 0 ) ; //프로그램 종료 } //end switch()--------------- } //while--------------------- } //main()-------------- } //class MemberManagement => 회원목록

=> 회원등록

=> 회원수정

=> 회원삭제

=>엑셀로 내보내기

인쇄

Java 국비과정 : Java 데이터베이스 연동

반응형

1. 윈도우 검색 창에서 sql입력 후 Run SQL Command Line을 실행한다.

2. SQL> conn system/oracle을 입력하여 관리자 모드로 접속한다.

3. 아이디 : java 비번 : 1234로 새로운 사용자를 만든다.

4. 다음과 같은 명령어를 입력하여 새로 만든 계정 ‘java’에게 데이터베이스에 대한 모든 권한을 준다

5. java 계정으로 sql접속 가능한지 확인

6. sqldeveloper를 실행한 후 ‘새로만들기’를 선택하여 새로 만든 ‘java’계정의 접속이름(별칭), 이름, 비번을 입력 후

테스트 -> 저장을 누른다.

7. 접속이 성공되면 다음과 같이 오른쪽에 새로운 워크시트 창이 생성된다.

8. 테이블 생성 쿼리문을 작성하여 테이블을 생성한다.

9. 테이블로 들어가 데이터 탭으로 들어가면 현재 내가 만든 테이블에 저장되어 있는 데이터들을 확인할 수 있다.

10. insert 쿼리문으로 임의의 데이터 3개를 넣어본다.

11. 이클립스와 연동하기 위해 새로운 프로젝트를 생성한다.

자바가 외부 프로그램(DB)에 접근하려면 그 프로그램에 대한 기능을 알고 있어야 한다.

Class.forName()을 호출하면 Driver 가 자기자신을 초기화하여 DriverManager에 등록을 한다. 즉 개발자가 따로 관리하지 않는 static 객체들이 알아서 DriverManager에 등록이 되는 것이다.

하지만 이대로 실행을 하면 다음과 같은 오류가 뜬다.

그 이유는 바로 작업 프로젝트에 odbc 설정을 해주지 않아서 인데

프로젝트에서 우클릭 -> properties -> Java Build Path -> Libraries -> Add External jar를 눌러서 해당 jdk버전에 맞는 ojdbc를 불러온다.

설정 후 Main클래스를 실행해보면 오류가 뜨지 않은 것을 확인할 수 있다.(Database기능을 이제 활용할 수 있다.)

12. 자바 프로그램과 DB연결하기.

연결이 이루어졌다면 연결객체가 생성되었으니 전송 객체를 생성해서 CRUD 쿼리문을 보낼 수 있어야 한다.

결과 값이 자바 프로그램으로 날아오면 그 결과값을 받아줄 자바 객체가 필요하다. 결과값의 자료형은 무엇일까??

리턴 값이 ResultSet임을 알 수 있다. 따라서 자료형이 ResultSet인 참조변수 rs를 선언한다.

ResultSet 객체의 구조는 bof와 eof를 가지고 있는 Iterator 구조와 흡사하다. 그래서 ResultSet은 Iterator와 같이 데이터를 꺼내는 메소드를 가지고 있다.

ResultSet 클래스의 next() 메소드 이용해 데이터를 하나씩 꺼낸다.

next() : ResultSet 데이터 구조에서 다음 칸으로 이동하여 값이 존재한다면 true를 반환하고 없다면 false를 반환하는 메소드

getXXX : 해당 항목 내 XXX 자료형에 맞는 데이터를 반환하는 메소드

13. main 클래스에 해당 메소드를 실행시키는 코드를 작성한 뒤 실행 후 결과 확인

결과

14. 자바에서 DB로 데이터를 삽입하는 메소드를 만들기

15. Main 클래스에서 insertUser() 메소드 실행 코드 작성

결과 확인

sqldeveloper에서도 확인

통상 executeQuery()는 데이터를 얻어오는데 사용하는 메소드이다. 그런데 insertQuery()는 DB에 데이터만 넣어주고 굳이 값을 가져올 필요가 없기 때문에 executeQuery()보다는 executeUpdate() 메소드를 사용한다.

executeUpdate()의 리턴값은 int형으로써 성공적으로 DB에 입력됐다면 1을 반환한다. 실패하면 에러가 발생하므로 그에 대한 예외처리를 해주어야 한다.

이 값을 토대로 데이터 입력의 정상여부를 확인한다. 쿼리문을 잘못 작성하는 등 셋팅하는 과정에서 실수를 했을 때 오류를 보고 파악하려면?

예시로 DBConnect.java 파일의 60번째 코드 id의 d를 빼고 실행해보았다.

오류 메세지의 아래부분에 해당 java 파일 어느 위치에서 실수가 있었는지 확인 할 수 있다.

16. updateUser(), deleteUser() 작성

updateUser()는 기능을 insert와 같기 때문에 insert메소드의 내용을 가져온다.

17. 메인 클래스에 updateUser(), deleteUser() 코드를 추가한 후 수정 삭제를 해보기

결과

반응형

26. JDBC [OracleDB과 JAVA연동], MVC모델-(회원가입, 로그인)

728×90

자바와 오라클을 연동하기 위해서는 JDBC(JAVA DATABASE CONNECTIVITY)가 필요합니다.

JDBC는 데이터베이스를 자바를 이용하여 조작하기 위한 자바 라이브러리입니다.

여기서는 MVC모델을 이용한 간단한 예제(회원가입, 로그인)를 통해 알아보도록 하겠습니다.

이클립스에서 프로젝트를 우클릭 -> build path를 눌러 ojdbc6.jar 파일을 추가해 줍니다.

이렇게 jar파일이 추가된 것을 볼 수 있습니다.

연결을 시키기 위해 DBConnection 클래스를 만들어 보겠습니다.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnecter { public static Connection getConnection() { Connection conn = null; try { // 연결에 필요한 정보 String user = “hr”; String pw = “hr”; String url = “jdbc:oracle:thin:@localhost:1522:XE”; // 드라이버를 메모리에 할당 Class.forName(“oracle.jdbc.driver.OracleDriver”); // 연결된 객체 가져오기 conn = DriverManager.getConnection(url, user, pw); } catch (ClassNotFoundException e) { System.out.println(“드라이버 로딩 실패”);// 드라이버 주소가 잘못됨 } catch (SQLException e) { System.out.println(“연결 실패”);// url이 잘못됨 } catch (Exception e) { System.out.println(“알수 없는 오류”); } return conn; } }

Oracle DBMS 에서 USER테이블을 생성해 보겠습니다.

CREATE SEQUENCE [시퀀스명]; 을 통하여 자동으로 중복이 되지 않는 시퀀스를 만들어 줍니다.

사용은 [시퀀스명].NEXTVAL 로 사용하면 됩니다.

Model 클래스를 만들어줍니다.

public class TBL_USER_VO { private int userNumber; private String id; private String pw; private String name; private int age; private String phoneNumber; public TBL_USER_VO() {;} public int getUserNumber() { return userNumber; } public void setUserNumber(int userNumber) { this.userNumber = userNumber; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } }

Controller 인 dao클래스를 만들어 줍니다.

Connection conn; // DB와 연결된 객체

PreparedStatement pstm; // SQL문을 담는 객체

ResultSet rs; // SQL문 결과를 담는 객체

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import vo.TBL_USER_VO; public class TBL_USER_DAO { Connection conn; // DB와 연결된 객체 PreparedStatement pstm; // SQL문을 담는 객체 ResultSet rs; // SQL문 결과를 담는 객체 // 아이디 중복검사 public boolean checkId(String id) { String query = “SELECT COUNT(ID) FROM TBL_USER WHERE ID = ?”; try { conn = DBConnecter.getConnection(); pstm = conn.prepareStatement(query); pstm.setString(1, id); rs = pstm.executeQuery(); rs.next(); // 행 if (rs.getInt(1)/* 열 */ == 1) { return true; } } catch (SQLException e) { System.out.println(“checkId SQL문 오류”); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (pstm != null) { pstm.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return false; } // 회원가입 // USERNUMBER NUMBER NOT NULL, // ID VARCHAR2(300), // PW VARCHAR2(300), // NAME VARCHAR2(300), // AGE NUMBER, // PHONENUMBER VARCHAR2(20), public void join(TBL_USER_VO user) { String query = “INSERT INTO TBL_USER(USERNUMBER, ID, PW, NAME, AGE, PHONENUMBER) ” + “VALUES(USER_SEQ.NEXTVAL, ?, ?, ?, ?, ?)”; try { conn = DBConnecter.getConnection(); pstm = conn.prepareStatement(query); pstm.setString(1, user.getId()); pstm.setString(2, user.getPw()); pstm.setString(3, user.getName()); pstm.setInt(4, user.getAge()); pstm.setString(5, user.getPhoneNumber()); pstm.executeUpdate(); } catch (SQLException e) { System.out.println(“join SQL문 오류”); } catch (Exception e) { e.printStackTrace(); } finally { try { if (pstm != null) { pstm.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { throw new RuntimeException(e.getMessage()); } } } // 로그인 public boolean login(String id, String pw) { String sql = “select * from TBL_USER where id=? and pw =?”; try { conn = DBConnecter.getConnection(); pstm = conn.prepareStatement(sql); pstm.setString(1, id); pstm.setString(2, pw); rs = pstm.executeQuery(); if(rs.next()) { return true; } return false; } catch (SQLException e) { System.out.println(“login sql문 오류”); }finally { try { if(rs!=null) { rs.close(); } if(pstm!=null) { pstm.close(); } if(conn!=null) { conn.close(); } } catch (SQLException e) { throw new RuntimeException(e.getMessage()); } } return false; } }

728×90

JAVA 자바 JDBC 오라클 DB 연동

반응형

🎯 자바 JDBC 오라클 DB 연결방법을 알아본다.

자바 JDBC

데이터베이스 시스템에 접근할 수 있는 자바 API이다.

오라클 DB 연동하기

자바 프로젝트를 만들고 SQL 데이터베이스와 연결하기 위해 가장 먼저 오라클 드라이버를 찾아야한다. JDBC 프로젝트를 할 때마다 항상 드라이버를 buildPath에 추가하는 설정이 필요하다.

ojdbc5_g.jar 파일을 찾는다

오라클 드라이버가 저장된 폴더 위치 : C:\app\User\product\11.2.0\dbhome_1\jdbc\lib

찾기쉽게 따로 빼놓기

매번 저 긴 경로를 찾아가기 힘들 땐 짧은 경로의 폴더를 하나 파서 보관한다.

자바 프로젝트 이름에서 오른쪽마우스를 클릭하고 Build Path -> Configure Build Path를 클릭한다.

Libraries 탭에서 외부 jar파일 추가를 클릭하고 oracle_jar 파일을 추가한다.

프로젝트에 생성됨

코드 실행 순서

//1. 4가지 정보 String driver = “oracle.jdbc.driver.OracleDriver”; String url = “jdbc:oracle:thin:@localhost:1521:orcl”; String userid = “scott”; String passwd = “tiger”;

가장 먼저 데이터베이스 연동을 위한 4가지 정보를 문자열에 저장한다. 오라클에 저장된 scott 계정의 DB를 사용할 것이다.

//2.드라이버 생성 Connection con = null; //db 연결 Statement stmt null; //connect를 이용해 sql명령을 실행하는 객체 ResultSet rs = null; //sql실행 후 select 결과를 저장하는 객체

드라이버 연동을 위해 사용하는 Connection, sql 명령어를 사용하기 위한 Statement, 명령 실행 결과를 저장하기 위한 ResultSet을 쉽게 사용하기 위해 간단한 이름의 변수를 만들었다.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

코드에 빨간줄이 생기면 클릭해서 java.sql을 import한다. 클래스의 가장 위에 import 코드가 자동으로 생성된다.

예외처리를 위해 아래 코드부터 try 블록 안에 작성한다.

1. 드라이버를 메모리에 로딩한다.

Class.forName(driver);

2. 오라클 연결( Connection 연결) url, userid, passwd 사용

con = DriverManager.getConnection(url, userid, passwd);

3. sql문을 작성한다. 스트링 안에 세미콜론을 붙이지 않는다.

String sql = “select deptno, dname, loc from dept”;

4. SQL 실행준비 단계. Statement, PreparedStataement 두 객체를 주로 이용한다. Connection에서 명령을 실행해줄 Statement 객체를 만든다.

stmt = con.createStatement();

5. Statement의 sql명령 결과를 ResultSet으로 받아서 실행한다. select문일 경우 executeQuery()를 사용하며, DML문일 경우엔 executeUpdate()를 사용한다.

rs = stmt.executeQuery(sql);

6. while 반복문을 사용해 rs로 받은 정보를 컬럼명으로 접근해서 출력한다. 여기까지 try문이 끝났다.

while(rs.next()) { int deptno = rs.getInt(“deptno”); String dname = rs.getString(“daname”); String loc = rs.getString(“loc”); System.out.println(deptno + “\t”+dname + “\t”+loc); }

while 반복문으로 출력할 때 컬럼명 대신 컬럼 순서에 맞는 번호 또는 별칭을 사용할 수 있다.

while(rs.next()) { int deptno = rs.getInt(1); String dname = rs.getString(2); String loc = rs.getString(3); System.out.println(deptno + “\t”+dname + “\t”+loc); }

7. catch문으로 예외를 처리한다.

}catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e) { e.printStackTrace(); }

8. finally문에서 자원을 반납한다. 실행했던 반대 순서로 작성한다.

finally { try { if(rs!=null)rs.close(); if(stmt!=null)stmt.close(); if(con!=null)con.close(); }catch(SQLException e) { e.printStackTrace(); } }

코드 전체 확인하기

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBC_Test { public static void main(String[] args) throws SQLException{ String driver = “oracle.jdbc.driver.OracleDriver”; String url = “jdbc:oracle:thin:@localhost:1521:orcl”; String userid = “scott”; String passwd = “tiger”; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName(driver); con = DriverManager.getConnection(url, userid, passwd); String sql = “select deptno, dname, loc from dept”; stmt = con.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { int deptno = rs.getInt(“deptno”); String dname = rs.getString(“dname”); String loc = rs.getString(“loc”); System.out.println(deptno + “\t” + dname + “\t” + loc); } } catch (ClassNotFoundException e) { e.getStackTrace(); } catch (SQLException e) { e.getStackTrace(); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if ( con != null) con.close(); } catch (SQLException e) { e.getStackTrace(); } } } }

SQL문 연습하기

String sql = “select deptno, dname, loc from dept where dname IN(‘SALES’)”;

SELET문으로 부서이름이 세일즈인 데이터만 출력하기

String name = “SALES”; String sql = “select deptno x, dname, loc from dept where dname='”+ name+”‘”;

statement를 사용할 경우 이렇게 따옴표가 들어간 조건문을 작성하기 까다로워진다.

PreparedStatement pstmt = null; String sql = “select deptno, dname, loc from dept”; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery();

그래서 앞으로는 주로 PreparedStatement를 사용한다.

String sql2 = “select deptno, dname, loc from dept where dname=’개발’ or dname=’영업'”; pstmt = con.prepareStatement(sql2); rs = pstmt.executeQuery(); while (rs.next()) { int deptno = rs.getInt(1); String dname = rs.getString(2); String loc = rs.getString(3); System.out.println(deptno + “\t” + dname + “\t” + loc); }

부서이름이 ‘개발’ 이거나 ‘영업’인 부서의 데이터만 출력하기

int deptno= 13; String deptname=”개발”; String loc=”서울”; String sql=”insert into dept (deptno,dname,loc)” +”values (“+deptno+”, ‘”+deptname+”‘,'”+ loc+”‘)”; stmt = con.createStatement(); int result= stmt.executeUpdate(sql); System.out.println(“실행된 레코드 갯수:” + result);

INSERT문 사용하기. DML 명령어를 사용할 경우 executeUpdate() 함수를 호출한다.

String sql = “insert into dept(deptno, dname, loc)” + “values (?,?,?)”; pstmt = con.prepareStatement(sql); pstmt.setInt(1, 99); pstmt.setString(2, “세일”); pstmt.setString(3, “경기”); int n = pstmt.executeUpdate(); System.out.println(n + “개의 레코드 저장”);

INSERT문을 사용하는 또 다른 방법. values에서 추가할 데이터 대신 ? 를 사용한다. 나중에 PreparedStatement 객체의 set메소드를 사용하여 값을 동적으로 설정할 수 있다. ?기호의 순서(1부터시작)를 사용하여 저장값을 set메소드로 설정한다. set메소드는 컬럼 데이터형에 따라서 setInt, setString (순서, 값) 이렇게 사용한다.

String dname = “영업”; String loc = “제주”; int deptno = 90; String sql = “update dept set dname='” + dname + “‘, loc='” + loc + “‘” + “where deptno=” + deptno; stmt = con.createStatement(); int num = stmt.executeUpdate(sql); System.out.println(“실행된 레코드 갯수: ” + num);

update문 사용하기

😜 NEXT : JDBC 문제 연습하기

반응형

키워드에 대한 정보 자바 db 연동 프로젝트

다음은 Bing에서 자바 db 연동 프로젝트 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?)

  • jdbc
  • java
  • driver
  • db연동
  • connection
  • 코딩
  • 자바
  • 연동
[JAVA] #DB연동을 #위해 #알아야 #하는 #개념(JDBC #driver?)


YouTube에서 자바 db 연동 프로젝트 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [JAVA] DB연동을 위해 알아야 하는 개념(JDBC driver?) | 자바 db 연동 프로젝트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  내 맘 의 주여 소망 되소서 | [새찬송가] 484장 내 맘의 주여 소망 되소서 답을 믿으세요

Leave a Reply

Your email address will not be published. Required fields are marked *