JDBC 연습: 데이터 검색(SELECT)
예제) 데이터베이스의 테이블로부터 조건에 맞는 데이터를 읽는 프로그램
import java.sql.*;
public class JDBCExample3 {
public static void main(String args[]) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "SELECT CODE, NAME, PRICE, MAKER " + "FROM GOODSINFO WHERE NAME = ";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, "st02", "st02");
pstmt = conn.prepareStatement(sql + "'전자사전'"); // '' 안의 상품명을 갖는 행만 읽기
rs = pstmt.executeQuery();
System.out.println("상품코드 상품명 \t\t 가격 제조사");
System.out.println("-------------------------------------------------------");
while (rs.next()) {
String code = rs.getString("CODE");
String name = rs.getString("NAME");
int price = rs.getInt("PRICE");
String maker = rs.getString("MAKER");
System.out.printf("%s %s \t%12d %s%n", code, name, price, maker);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
결과) 오라클에서 SELECT CODE, NAME, PRICE, MAKER " + "FROM GOODSINFO WHERE NAME = '전자사전'
이라는 SQL 명령어를 친 것과 똑같은 결과물이 자바에서 출력된다.
상품코드 상품명 가격 제조사
-------------------------------------------------------
10004 전자사전 180000 아이리버
응용) 위의 프로그램을 수정하여 상품명을 입력받아 데이터를 검색하는 프로그램을 만들자.
import java.sql.*;
import java.util.*;
public class JDBCExample3_21_4 {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "SELECT CODE, NAME, PRICE, MAKER " + "FROM GOODSINFO WHERE NAME = ";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, "st02", "st02");
System.out.print("검색할 상품명: "); // 검색할 상품명을 입력받아서
String goodsName = scan.nextLine(); // goodsName에 담는다.
pstmt = conn.prepareStatement(sql + "'" + goodsName + "'");
// SQL문에서 문자열을 감싸는 작은 따옴표를 큰 따옴표로 감싸 꼭 포함시켜야 한다.
rs = pstmt.executeQuery();
System.out.println("상품코드 상품명 \t\t 가격 제조사");
System.out.println("-------------------------------------------------------");
while (rs.next()) {
String code = rs.getString("CODE");
String name = rs.getString("NAME");
int price = rs.getInt("PRICE");
String maker = rs.getString("MAKER");
System.out.printf("%s %s \t%12d %s%n", code, name, price, maker);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
응용2) 위의 프로그램은 상품명이 정확해야만 검색이 된다. 상품명 앞글자를 입력하면 검색이 되도록 수정
package 연습;
import java.sql.*;
import java.util.*;
public class JDBCExample3_21_4b {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "SELECT CODE, NAME, PRICE, MAKER " + "FROM GOODSINFO WHERE NAME LIKE ";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, "st02", "st02");
System.out.print("검색할 상품 앞글자: ");
String goodsName = scan.nextLine();
pstmt = conn.prepareStatement(sql + "'" + goodsName + "%'");
rs = pstmt.executeQuery();
System.out.println("상품코드 상품명 \t\t 가격 제조사");
System.out.println("-------------------------------------------------------");
while (rs.next()) {
String code = rs.getString("CODE");
String name = rs.getString("NAME");
int price = rs.getInt("PRICE");
String maker = rs.getString("MAKER");
System.out.printf("%s %s \t%12d %s%n", code, name, price, maker);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
pstmt.close();
conn.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
SELECT CODE, NAME, PRICE, MAKER
FROM GOODSINFO
WHERE NAME LIKE '문자열%'
결과)
검색할 상품명: 디
상품코드 상품명 가격 제조사
-------------------------------------------------------
10001 디지털TV 350000 LG
10003 디지털 카메라 210000 삼성
'자바의 기초문법' 카테고리의 다른 글
자바 빈즈(Beans) 클래스 (0) | 2016.01.21 |
---|---|
JDBC 문제: 자바에서 데이터 입력,수정,삭제,조회 (2) | 2016.01.07 |
JDBC 프로그래밍 (0) | 2016.01.07 |
HashMap을 이용한 메뉴, 가격 수정 문제 (0) | 2016.01.04 |
자바 네트워크 통신 프로그래밍: ServerSocket, socket (0) | 2015.12.29 |