728x90
반응형
SMALL
1.DriverManager
JDBC 드라이버를 통하여 Connection을 만드는 역할을 합니다.
conn=DriverManager.getConnection(ur1 , user, password);
2.Connection
db연결해주는 내장 인터페이스
3.Preparestatement
자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
String sql="delete from member where name=?";
pst=conn.prepareStatement(sql);
pst.setString(1,name);
4.Resultset
테이블을 자바에 넘길때 데이터의 구조를 하나씩 가져오는것(=select)
String sql="select * from member";
pst=conn.prepareStatement(sql);
//4.query 실행
////db에 저장된 정보를 ResultSet 객체에 저장
rs=pst.executeQuery();//DB내의 컬럼존재확인
아래 구문을 단체로 메서드화 시키기
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
Connection conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="insert into member values(?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name); //db의 파라미터 인덱스는 1부터 시작함
pst.setInt(2, age);
pst.setString(3, gender);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
메서드로 새로탄생
private static void insertMember(String name, int age, String gender) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
Connection conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="insert into member values(?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name); //db의 파라미터 인덱스는 1부터 시작함
pst.setInt(2, age);
pst.setString(3, gender);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
메서드 내의 Connection 과 preparedstatement 는 다지운다.
기능들의 메서드화 변경전 메인문
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import musicplayer.Music;
public class jdbc_main {
static Connection conn=null; //DB에 연결하기위한 객체 인터페이스. 메서드에서 계속 가져다 쓰기때문에 static 전역변수로 선언하여 공유
static PreparedStatement pst=null; //DB와 자바간의 통신 통로역할
static ResultSet rs=null; //select 문을 사용할 때 필요
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
boolean isPlay=true;
while(isPlay) {
System.out.println("[1]회원등록 [2]회원수정 [3]회원조회 [4]회원삭제 [5]종료 :");
int button = sc.nextInt();
switch(button) {
case 1: //회원 등록
System.out.print("이름: ");
String name=sc.next();
System.out.print("나이: ");
int age=sc.nextInt();
System.out.print("성별: ");
String gender=sc.next();
//try-catch문: 프로그램의 예외처리를 실행하는 구문
//try문: 실핼할 로직
//catch문: try문에 작성된 로직이 실행 중 오류가 발생했을 때 동작하는 구문
insertMember(name, age, gender);
break;
case 2: //회원수정(나이만)
System.out.println("나이를 수정할 사람을 입력해주세요");
name=sc.next();
System.out.println("나이를 수정하겠습니다");
age=sc.nextInt();
updateMember(name, age);
break;
case 3: //회원조회
selectmemberall();
break;
case 4: // 회원삭제
System.out.println("삭제할 회원의 이름을 입력해주세요");
name=sc.next();
deletemember(name);
break;
case 5: //회원 시스템 종료
System.out.println("프로그램을 종료합니다");
isPlay=false;
default:
}//switch
}//while
}
private static void deletemember(String name) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="delete from member where name=?";
pst=conn.prepareStatement(sql);
pst.setString(1,name);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
private static void selectmemberall() {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="select * from member";
pst=conn.prepareStatement(sql);
//4.query 실행
////db에 저장된 정보를 ResultSet 객체에 저장
rs=pst.executeQuery();//DB내의 컬럼존재확인
//5.ResultSet 객체의 저장된 db정보를 가져오기
//rs.getString(인덱스) or rs.getString(컬럼명)
while(rs.next()) {
String getName=rs.getString(1);
int getAge=rs.getInt(2);
String getGender=rs.getNString(3);
System.out.println(getName+"/"+getAge+"/"+getGender);
}
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection,prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
private static void updateMember(String name, int age) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="update member set age=? where name=?";
pst=conn.prepareStatement(sql);
pst.setInt(1,age);
pst.setString(2,name);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
private static void insertMember(String name, int age, String gender) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="insert into member values(?,?,?)";
pst = conn.prepareStatement(sql);
pst.setString(1, name); //db의 파라미터 인덱스는 1부터 시작함
pst.setInt(2, age);
pst.setString(3, gender);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
}
DB접근에 기능이 관련된 4개의 메서드들을 클래스화 시켜 더 단순구분 시킨다.-->[MVC 패턴으로 가는 초입]
최종 클래스파일(기능들의 메서드화 완료)
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//DAO
//DB에 관련된 기능들을 관리하는 객체
public class memberDAO { //추후에 DB관련 메서드는 추가할시 여기서 작업하면됨
private Connection conn=null; //DB에 연결하기위한 객체 인터페이스. 메서드에서 계속 가져다 쓰기때문에 static 전역변수로 선언하여 공유
private static PreparedStatement pst=null; //DB와 자바간의 통신 통로역할
private static ResultSet rs=null; //select 문을 사용할 때 필요
public void deletemember(String name) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="delete from member where name=?";
pst=conn.prepareStatement(sql);
pst.setString(1,name);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
public void selectmemberall() {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="select * from member";
pst=conn.prepareStatement(sql);
//4.query 실행
////db에 저장된 정보를 ResultSet 객체에 저장
rs=pst.executeQuery();//DB내의 컬럼존재확인
//5.ResultSet 객체의 저장된 db정보를 가져오기
//rs.getString(인덱스) or rs.getString(컬럼명)
while(rs.next()) {
String getName=rs.getString(1);
int getAge=rs.getInt(2);
String getGender=rs.getNString(3);
//System.out.println(getName+"/"+getAge+"/"+getGender);
}
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection,prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
public void updateMember(String name, int age) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="update member set age=? where name=?";
pst=conn.prepareStatement(sql);
pst.setInt(1,age);
pst.setString(2,name);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
public void insertMember(String name, int age, String gender) {
try { //고정적으로 계속 쓰이는것 복사코드
String ur1="jdbc:oracle:thin:@localhost:1521:xe"; //localhost부분을 아이피주소로 바꾸면 팀원모두 db서버에 접근 가능
String user="hr";
String password="hr";
//1. JDBC 드라이버 로딩(동적로딩)
Class.forName("oracle.jdbc.driver.OracleDriver");//이 구문을 실행했을때 해당 파일이 있는지 없는지 확인.복사쓰기 외울필요x
//2. DB 연결
conn=DriverManager.getConnection(ur1 , user, password);// 아까 db 커넥션의 propertise 정보
if(conn==null) {
System.out.println("db연결 실패");
}else {
System.out.println("db연결 성공");
}
//3. DB에 보낼 Query문 작성
//PreparedStatement:자바프로그램과 sql사이에 데이터를 전송할수있는 통로를 만들어주는 역할
//인터페이스 클래스임으로 객체를 생성할수없음
String sql="insert into member values(?,?,?)";
pst = conn.prepareStatement(sql);
pst.setString(1, name); //db의 파라미터 인덱스는 1부터 시작함
pst.setInt(2, age);
pst.setString(3, gender);
//통로를 만들었으니 이제 실핼할수있는 메서드를 만들어야함
//db의 변화 ex)String sql="insert into member values(?,?,?)";
//insert delete update 같은경우 executeUpdate() 메서드 사용
//나머지 select는 executeupQuery() 사용
//4, Query 실행
pst.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //오류메시지 출력
} catch (SQLException e) {
e.printStackTrace();
} finally {//finally: try~catch문과는 상관없이 무조건 실행하는 구문
//6. db관련 연결객체 종료
//->종료하지 않을 경우 연결된 객체들이 쌓이게 되면서 db연결에 문제가 발생
//Connection prepareStatement 는 무조건 종료를 해줘야함=반환해줘야함
try {
if(pst != null) {
pst.close();
}
if(conn !=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}//end try~catch~~finally
}
}
최종 메인문
package jdbc;
import java.lang.reflect.Member;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import musicplayer.Music;
public class jdbc_main2 {
static Connection conn=null; //DB에 연결하기위한 객체 인터페이스. 메서드에서 계속 가져다 쓰기때문에 static 전역변수로 선언하여 공유
static PreparedStatement pst=null; //DB와 자바간의 통신 통로역할
static ResultSet rs=null; //select 문을 사용할 때 필요
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
boolean isPlay=true;
//DB에 관련된 기능들을 관리하는 dao 객체 생성
memberDAO dao=new memberDAO();
while(isPlay) {
System.out.println("[1]회원등록 [2]회원수정 [3]회원조회 [4]회원삭제 [5]종료 :");
int button = sc.nextInt();
switch(button) {
case 1: //회원 등록
System.out.print("이름: ");
String name=sc.next();
System.out.print("나이: ");
int age=sc.nextInt();
System.out.print("성별: ");
String gender=sc.next();
//try-catch문: 프로그램의 예외처리를 실행하는 구문
//try문: 실핼할 로직
//catch문: try문에 작성된 로직이 실행 중 오류가 발생했을 때 동작하는 구문
dao.insertMember(name, age, gender);
break;
case 2: //회원수정(나이만)
System.out.println("나이를 수정할 사람을 입력해주세요");
name=sc.next();
System.out.println("나이를 수정하겠습니다");
age=sc.nextInt();
dao.updateMember(name, age);
break;
case 3: //회원조회
dao.selectmemberall();
break;
case 4: // 회원삭제
System.out.println("삭제할 회원의 이름을 입력해주세요");
name=sc.next();
dao.deletemember(name);
break;
case 5: //회원 시스템 종료
System.out.println("프로그램을 종료합니다");
isPlay=false;
default:
}//switch
}//while
}
}
클래스 파일로 따로 설정해둬서 메인코드문이 간단하게 변경됨을 확인할수있다.
[메인 출력문]
현재 DB와 JAVA간의 통신을 완료한 상태이며
DAO 클래스의 SELECT 메서드에서
while(rs.next()) {
String getName=rs.getString(1);
int getAge=rs.getInt(2);
String getGender=rs.getNString(3);
//System.out.println(getName+"/"+getAge+"/"+getGender);
이 형태로 회원 단일값 하나씩의 정보만 출력시켜주고 있다.
우리는 회원값의 전체정보를 UI에 보내줄수 있는 과정을 진행해야한다.
이는 클래스의 전체값을 객체로 사용 하는 ArrayList 를 사용하여 ui에 회원정보를 전달해줄수있는 방법을 다음시간에 진행할것이다
728x90
반응형
LIST
'Language > 자바' 카테고리의 다른 글
[GUI]2 (0) | 2021.01.14 |
---|---|
[GUI] (0) | 2021.01.12 |
[자바]Interface(인터페이스) (0) | 2021.01.11 |
[자바]접근제한자 & 추상화(클래스,메서드) (0) | 2021.01.11 |
[JDBC]이클립스 JDBC연동 (0) | 2021.01.11 |