Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- abstract
- exception
- 한국건설관리시스템
- oracle
- 객체 비교
- 자동차수리시스템
- NestedFor
- GRANT VIEW
- 사용자예외클래스생성
- 컬렉션프레임워크
- 예외미루기
- 컬렉션 타입
- 대덕인재개발원
- cursor문
- 정수형타입
- 집합_SET
- 참조형변수
- EnhancedFor
- 자바
- 메소드오버로딩
- 인터페이스
- 어윈 사용법
- 예외처리
- 추상메서드
- Java
- 생성자오버로드
- 오라클
- 환경설정
- 다형성
- 제네릭
Archives
- Today
- Total
거니의 velog
230803 자바 강의 본문
(1) 로그인 -> sql, (id, pw). 정당한 사용자를 판별해야 함.
selectOne( );
동적 쿼리를 필요로 함(런타임에서 데이터를 입력받기 때문)
SELECT PROD_ID, PROD_NAME, PROD_PRICE, PROD_PROPERSTOCK FROM PROD;
CREATE TABLE T_PROD AS
SELECT PROD_ID, PROD_NAME, PROD_PRICE, PROD_PROPERSTOCK
FROM PROD; -- 서브쿼리를 통한 테이블 생성
SELECT * FROM T_PROD;
COMMIT;
[DBTest.java]
package dbprogramming;
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.sql.Statement;
import java.util.List;
public class DBTest {
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String user = "pc_21";
private String password = "java";
private Connection conn = null;
private Statement stmt = null; // 정적 쿼리
private PreparedStatement pstmt = null; // 동적 쿼리
private ResultSet rs = null;
private CallableStatement cs = null;// 프로시저 실행결과 반환
public void selectList(String sql) {
try {
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql); // 뷰를 보관하고 있는 객체
while(rs.next()) {
String pid = rs.getString("PROD_ID");
String pname = rs.getString("PROD_NAME");
StringBuilder pleng = new StringBuilder(pname);
for(int i=pname.length(); i<pname.length()+2; i++) {
pleng.append("\0");
}
String name = pleng.toString();
int price = rs.getInt("PROD_PRICE");
int pstock = rs.getInt("PROD_PROPERSTOCK");
System.out.printf("%-12s %-20s %10d %5d\n", pid, name, price, pstock);
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
if(rs != null) try {rs.close();} catch(Exception e) {}
if(stmt != null) try {stmt.close();} catch(Exception e) {}
if(pstmt != null) try {pstmt.close();} catch(Exception e) {}
if(conn != null) try {conn.close();} catch(Exception e) {}
}
new DBTestExample().main(null);
}
public void selectOne(String sql, String pd) {
try {
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pd);
rs = pstmt.executeQuery();
while(rs.next()) {
String pid = rs.getString("PROD_ID");
String pname = rs.getString("PROD_NAME");
StringBuilder pleng = new StringBuilder(pname);
for(int i=pname.length(); i<pname.length()+2; i++) {
pleng.append("\0");
}
String name = pleng.toString();
int price = rs.getInt("PROD_PRICE");
int pstock = rs.getInt("PROD_PROPERSTOCK");
System.out.printf("%-12s %-20s %10d %5d\n", pid, name, price, pstock);
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
if(rs != null) try {rs.close();} catch(Exception e) {}
if(stmt != null) try {stmt.close();} catch(Exception e) {}
if(pstmt != null) try {pstmt.close();} catch(Exception e) {}
if(conn != null) try {conn.close();} catch(Exception e) {}
}
new DBTestExample().main(null);
}
/*
* insert into t_prod
* values (?, ?, ?, ?); 오라클은 index 기준이 1
*/
public int update(String sql, List<Object> param) {
int result = 0;
try {
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql);
for(int i=0; i<param.size(); i++) {
pstmt.setObject(i+1, param.get(i)); // 오라클은 index 기준이 1. 그래서 i+1.
}
result = pstmt.executeUpdate();
conn.commit();
}catch(SQLException e) {
e.printStackTrace();
}finally {
if(rs != null) try {rs.close();} catch(Exception e) {}
if(stmt != null) try {stmt.close();} catch(Exception e) {}
if(pstmt != null) try {pstmt.close();} catch(Exception e) {}
if(conn != null) try {conn.close();} catch(Exception e) {}
}
return result;
}
}
[DBTestExample.java]
package dbprogramming;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DBTestExample {
public static void main(String[] args) {
DBTest dt = new DBTest();
StringBuilder sb = new StringBuilder();
String sql = null;
List<Object> param = null;
int flag = 0;
String pid = null;
Scanner sc = new Scanner(System.in);
System.out.println("[[데이터베이스 관리]]");
System.out.println(" 1. 전체검색"); // 대전에 있는 사람의 여러 명 자료 검색
System.out.println(" 2. 단일검색"); // 로그인 정보 가져오기
System.out.println(" 3. 신규자료입력");
System.out.println(" 4. 자료수정");
System.out.println(" 5. 자료삭제");
System.out.println(" 9. 종료");
System.out.println("------------------");
System.out.print("작업번호 >> ");
int choice = Integer.parseInt(sc.nextLine());
switch(choice) {
case 1 :
sb.append(" SELECT PROD_ID, PROD_NAME, PROD_PRICE, PROD_PROPERSTOCK ");
sb.append(" FROM T_PROD ");
// sb.append(" WHERE PROD_PRICE >= 1000000 ");
sb.append(" ORDER BY PROD_ID ASC ");
sql = sb.toString();
dt.selectList(sql);
break;
case 2 :
sb.append(" SELECT PROD_ID, PROD_NAME, PROD_PRICE, PROD_PROPERSTOCK ");
sb.append(" FROM T_PROD ");
sb.append(" WHERE PROD_ID = ? ");
sb.append(" ORDER BY PROD_ID ASC ");
sql = sb.toString();
System.out.print("조회할 아이디 : ");
String pd = sc.nextLine();
dt.selectOne(sql, pd);
break;
case 3 : // 신규입력(insert into TBLNM values ~)
param = new ArrayList<Object>();
System.out.print("상품코드 : ");
pid = sc.nextLine();
param.add(pid);
System.out.print("상품명 : ");
String pname = sc.nextLine();
param.add(pname);
System.out.print("가격 : ");
int price = Integer.parseInt(sc.nextLine());
param.add(price);
System.out.print("적정재고 : ");
int stock = Integer.parseInt(sc.nextLine());
param.add(stock);
sql = " INSERT INTO T_PROD VALUES(?, ?, ?, ?) ";
flag = dt.update(sql, param);
if(flag != 0) {
System.out.println("자료 입력 성공");
}else {
System.out.println("자료 입력 실패");
}
main(null);
case 4 : // 자료수정(update TBLNM set ~ where)
param = new ArrayList<Object>();
sql = " UPDATE T_PROD SET ";
System.out.print("변경할 상품번호 : ");
pid = sc.nextLine();
param.add(pid);
String yesOrNot = "";
System.out.print("상품명 변경? (y/n) ");
yesOrNot = sc.nextLine();
while(yesOrNot.equalsIgnoreCase("y")) {
System.out.print("상품명 : ");
String p1 = sc.nextLine();
sql += "PROD_NAME = '"+ p1 + "', ";
break;
}
System.out.print("상품가격 변경? (y/n) ");
yesOrNot = sc.nextLine();
while(yesOrNot.equalsIgnoreCase("y")) {
System.out.print("상품가격 : ");
int p2 = Integer.parseInt(sc.nextLine());
sql += "PROD_PRICE = "+ p2 + ", ";
break;
}
System.out.print("적정재고 변경? (y/n) ");
yesOrNot = sc.nextLine();
while(yesOrNot.equalsIgnoreCase("y")) {
System.out.print("적정재고 : ");
int p3 = Integer.parseInt(sc.nextLine());
sql += "PROD_PROPERSTOCK = "+ p3 + ", ";
break;
}
int sqllen = sql.length();
sql = sql.substring(0, sqllen-2); // (endindex-1)-1[,]
sql += " WHERE PROD_id = ? ";
// System.out.println(sql);
flag = dt.update(sql, param);
if(flag != 0) {
System.out.println("자료 갱신 성공");
}else {
System.out.println("자료 갱신 실패");
}
main(null);
case 5 : // 자료삭제(delete from ~ [where])
param = new ArrayList<Object>();
System.out.print("상품코드 : ");
pid = sc.nextLine();
param.add(pid);
sql = " DELETE FROM T_PROD ";
sql += "WHERE PROD_ID = ? ";
flag = dt.update(sql, param);
if(flag != 0) {
System.out.println("자료 삭제 성공");
}else {
System.out.println("자료 삭제 실패");
}
main(null);
case 9 :
System.out.println("프로그램을 종료합니다...");
System.exit(0);
default :
System.out.println("잘못 입력하셨습니다...");
main(null);
}
}
}
[데이타베이스의 메타데이터(metadata)정보]
'대덕인재개발원 > 대덕인재개발원_Java' 카테고리의 다른 글
230802 자바 강의 (0) | 2023.08.02 |
---|---|
230801 자바 강의 (0) | 2023.08.01 |
230731 자바 강의 (0) | 2023.07.31 |
230729 자바 과제 _ 클래스 다이어그램 구현 (0) | 2023.07.29 |
230728 자바 강의 (0) | 2023.07.29 |