SELECT * FROM GOODSINFO;
위의 GOODSINFO 테이블을 이용하여 빈즈 클래스를 만들고,
빈즈를 이용하여 코드값을 입력하면 해당 상품명이 출력되는 JDBC 예제
1. GOODSINFO 테이블을 불러올 빈즈 클래스 GoodsInfo를 만든다.
GOODSINFO 테이블은 CODE, NAME, PRICE, MAKER의 컬럼을 가지므로
이들을 담을 필드변수 code, name, price, maker를 생성하여 각각에 대한 getter 메소드와 setter 메소드를 만든다.
package 빈즈;
public class GoodsInfo {
private String code;
private String name;
private int price;
private String maker;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getMaker() {
return maker;
}
public void setMaker(String maker) {
this.maker = maker;
}
}
2. 빈즈 클래스 GoodsInfo를 사용하여 SELECT문을 실행할 클래스를 만든다.
package 빈즈;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JDBC_Beans02 { // 빈즈에서 DB를 가져와 SELECT문을 반영할 클래스
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
public GoodsInfo getGoodsInfo(String code) { // 빈즈에서 CODE값을 가져와 SELECT문에 적용할 메소드
String sql = "select * from goodsInfo where code = ?";
GoodsInfo goods = new GoodsInfo(); // 빈즈 클래스를 goods로 인스턴스화
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url,"st02","st02");
pstmt = con.prepareStatement(sql);
pstmt.setString(1, code);
rs = pstmt.executeQuery();
if(rs.next()) { // 결과가 1개 행인 경우에는 반복문 while 대신 if로 사용할 수 있다.
String db_code = rs.getString("CODE"); // getString은 executeQuary 관련 문법
int db_price = rs.getInt("PRICE"); // getInt는 executeQuary 관련 문법
String db_name = rs.getString("NAME");
String db_maker = rs.getString("MAKER");
goods.setCode(db_code);
// 빈즈 인스턴스 goods의 setCode 메소드에 이 메소드 getGoodsInfo에서 입력받은 String code를 반영한다.
code가 아니라 db_code라 쓴 것은 이 메소드에서 입력받을 변수명이 String code라서 이름이 중복되기 때문.
goods.setPrice(db_price);
goods.setName(db_name);
goods.setMaker(db_maker);
// 위의 빈즈의 setPrice, setNmae, setMaker 메소드들은 이 예제에선 사용하지 않았다.
}
} catch(Exception e) {
System.out.println(e.getMessage());
} finally{
try{ pstmt.close(); con.close(); }
catch(Exception e){}
}
return goods; // 빈즈 클래스의 메소드 goods로 이 메소드의 값을 리턴한다.
}
public static void main(String[] args) { // 위의 getGoodsInfo 메소드를 사용할 실행 메소드
JDBC_Beans02 obj = new JDBC_Beans02(); // 이 클래스를 쓰기 위해 obj로 인스턴스화.
GoodsInfo goodsInfo = obj.getGoodsInfo("10004");
// 빈즈 Goodsinfo 클래스를 쓰기 위해 goodsinfo란 인스턴스로 사용.
이 goodsinfo 인스턴스에 현 클래스 obj에 있는 getGoodsInfo 메소드에 10004를 대입한 값을 넣는다.
System.out.println(goodsInfo.getName());
// 빈즈 클래스의 getName 메소드를 실행한다.
// 코드값 10004에 해당하는 상품명이 출력된다.
}
}
결과) main 메소드에서 obj.getGoodsInfo에 넣은 코드값 10004에 해당하는 상품명이 출력된다.
전자사전
'자바의 기초문법' 카테고리의 다른 글
DAO와 DTO (0) | 2016.01.27 |
---|---|
네이버 개발자센터 SVN 이클립스에 연동하기 (0) | 2016.01.25 |
JDBC 자바 빈즈(Beans) 예제: UPDATE문 (0) | 2016.01.21 |
자바 빈즈(Beans) 클래스 (0) | 2016.01.21 |
JDBC 문제: 자바에서 데이터 입력,수정,삭제,조회 (2) | 2016.01.07 |