2020.11.11 고급자바 과제 (db 연결 select 절 조회 )


//문제 ) 사용자로부터 Lprod_id 값을 입력받아 입력한 값보다 Lprod_id 값이 큰 자료들을 출력하시오. 

package kr.or.ddit.basic;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;


//문제 ) 사용자로부터 Lprod_id 값을 입력받아 입력한 값보다 Lprod_id 값이 큰 자료들을 출력하시오. 


public class JdbcTest02 {


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

// DB 작업에 필요한 객체

System.out.println("1 ~ 9까지의 정수를 입력하세요 > ");

int num = sc.nextInt();


Connection conn = null;

Statement stmt = null;

ResultSet rs = null;


try {

// 1. 드라이버 로딩

Class.forName("oracle.jdbc.driver.OracleDriver");


// 2. db 연결 -> Connection 객체 생성


conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "Aurora", "java");


// 3-1 실행할 SQL 문 작성

String sql = "select * from lprod";

System.out.println("실행한 SQL 문 : " + sql);


// 3-2 Statement 객체 생성 => Connection 객체를 이용


stmt = conn.createStatement();


// 4. SQL 문을 db 서버로 전송해서 실행하고 결과를 얻기


rs = stmt.executeQuery(sql);


// 추가 사용자로부터 입력받기


// 5. 결과처리

while (rs.next()) {

if (rs.getInt(1) > num) { // 만약 sql 문에 where 절을 사용하지 않고 이런방법으로하면 데이터를 읽어오고 나가야하는데

// 도 소모가 많아서 where 절을 써서 sql 을 검색하는 것이 훨씬 좋은 방법이다.

System.out.println("Lprod_id : " + rs.getInt("lprod_id")); // 소문자써도되고 대문자써도됨

System.out.println("Lprod_gu : " + rs.getString(2));

System.out.println("Lprod_nm : " + rs.getString("lprod_nm"));


System.out.println("--------------------------------------------------");


}


}

System.out.println("출력 끝");


} catch (SQLException e) {

// TODO: handle exception

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

// 6. 사용했던 자원 반납하기 시작한 순서와 반대로 닫아준다.

if (rs != null)

try {

rs.close();

} catch (SQLException e) {

}

if (stmt != null)

try {

stmt.close();

} catch (SQLException e) {

}

if (conn != null)

try {

conn.close();

} catch (SQLException e) {

}

}


}


}



// 문제 2 ) lprod_id 값 2개를 차례로 입력받아서 두 값 중 작은값부터 큰값사이의 자료들을 출력하시오. 

package kr.or.ddit.basic;

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

// 문제 2 ) lprod_id 값 2개를 차례로 입력받아서 두 값 중 작은값부터 큰값사이의 자료들을 출력하시오. 
public class JdbcTest03 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

System.out.println("첫번째 Lprod_id 입력 > ");
int num1 = sc.nextInt();
System.out.println("두번째 Lprod_id 입력  > ");
int num2 = sc.nextInt();
if (num1 > num2) {
int numfor1 = num1;

num1 = num2;
num2 = numfor1;
}
/* max = Math.max(num1, num2);
min = Math.min(num1, num2); 
*/
try {
Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "Aurora", "java");



String sql = "select * from lprod where lprod_id between " + num1 + " and " + num2;

stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

/*방법1 
* Scanner sc = new Scanner(System.in);
* System.out.println("1 ~ 9까지의 정수를 입력하세요 > "); int num1 = sc.nextInt();
* System.out.println("1 ~ 9까지의 정수를 입력하세요 > "); int num2 = sc.nextInt();
*/
/*
* if ( num1 > num2) { int numfor1 = num1;
* num1 = num2 ; num2 = numfor1;
* }
*/

while (rs.next()) {

/*
* //방법1 if (rs.getInt("lprod_id") >= num1 && rs.getInt("lprod_id") <= num2) {
* System.out.println("Lprod_id : " + rs.getInt("lprod_id"));
* System.out.println("Lprod_gu : " + rs.getString(2));
* System.out.println("Lprod_nm : " + rs.getString("lprod_nm"));
* System.out.println("--------------------------------------------------"); }
*/

// 방법2

System.out.println("Lprod_id : " + rs.getInt("lprod_id"));
System.out.println("Lprod_gu : " + rs.getString(2));
System.out.println("Lprod_nm : " + rs.getString("lprod_nm"));
System.out.println("--------------------------------------------------");

}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 6. 사용했던 자원 반납하기 시작한 순서와 반대로 닫아준다.
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
}
if (stmt != null)
try {
stmt.close();
} catch (SQLException e) {
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
}
}

}

}

댓글