본문 바로가기

프로그래밍/JDBC

SQL 마이너스 만들기




Myconn.java

package conn;

import java.sql.*;

 

public class MyConn {
 /**
  * scott 계정 커넥션 메소드
  * @return java.sql.Connection
  * @throws SQLException
  */
 public static Connection getConnection() throws SQLException {
  try {
   Class.forName("oracle.jdbc.OracleDriver");
  } catch (ClassNotFoundException e) {

    // 드라이버 실패시 띄워주는 오류창
   e.printStackTrace();
   System.out.println("ojdbc6.jar 파일이 필요합니다.");
  }
  String url = "jdbc:oracle:thin:@112.169.178.99:1521:xe";
  return DriverManager.getConnection(url, "scott", "tiger");
 }

 

 

 

SqlMinus.java

package minus;


import java.io.*;
import java.sql.*;

import conn.*;

 

public class SqlMinus {
 private BufferedReader br =
   new BufferedReader(new InputStreamReader(System.in));
 
 public static void main(String[] args) {
  new SqlMinus().execute();
 }

 

 private void execute() {
  System.out.println("Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production");
  while(true) {
   System.out.print("Minus> ");
   try {
    String sql = br.readLine();
    // 앞글자 6개를 잘라서 비교
    if(sql.equalsIgnoreCase("exit")) {     // sql에 들어오는 값이 대소문자 모두 포함 exit입력시 종료
     System.out.println("Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production");
     System.exit(0);                           //종료 해주는 메소드
    }
    String cmd = sql.substring(0, 6);    // 입력한값을 0부터 6까지 짤라주는 형식


    switch(cmd.toLowerCase()) {       // cmd에 입력한 값을 소문자로 변환!!


                        case "select" : 

                                  select(sql); break;
    

                        case "insert" : 

                                 insert(sql); break;
    

                        case "update" : 

                                 update(sql); break;
    

                        case "delete" :                             

                                 delete(sql); break;
    

                                 default :                                 

                                 other(sql); break;
      }
   } catch (IOException e) {
           e.printStackTrace();
   } catch (SQLException e) {
          System.out.println(e.getMessage());
   }
  }
 }

 

 private void other(String sql) throws SQLException {
  try(
    Connection conn = MyConn.getConnection();     //데이터베이스 연결 해주기
    Statement stmt = conn.createStatement();           //Statement 생성 해주기
    ){
   stmt.execute(sql);
   System.out.println("실행이 잘 되었습니다.");
  }
 }


 private int dml(String sql) throws SQLException {
  try(
    Connection conn = MyConn.getConnection();      //데이터베이스 연결 해주기
    Statement stmt = conn.createStatement();            //Statement 생성 해주기
    ){
   return stmt.executeUpdate(sql);
  }
 }

 

 private void delete(String sql) throws SQLException {   //삭제 해주는 메소드
  System.out.println(dml(sql) + "행이 삭제되었습니다.");
 }


 private void update(String sql) throws SQLException {  //수정 해주는 메소드
  int result = dml(sql);
  System.out.println(result + "행이 수정되었습니다.");
 }

 

 private void insert(String sql) throws SQLException {  //데이터 추가 해주는 메소드
  int result = dml(sql);
  System.out.println(result + "행이 입력되었습니다.");
 }

 

 private void select(String sql) throws SQLException {  //조회 해주는 메소드
  try(
         Connection conn = MyConn.getConnection();
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery(sql);
  ) {
         ResultSetMetaData rsmd = rs.getMetaData();
         int count = rsmd.getColumnCount();
        

         for(int i=1; i<count+1; i++) {
              System.out.print(rsmd.getColumnLabel(i) + " ");
         }
   System.out.println();


   int rowCount = 0;


   while(rs.next()) {
    for(int i=1; i<count+1; i++)
     System.out.print(rs.getString(i) + " ");
    System.out.println();
    rowCount++;
   }
   System.out.println(rowCount + "행이 선택되었습니다.");
  }
 }

 

    

'프로그래밍 > JDBC' 카테고리의 다른 글

JDBC 실습(2)  (0) 2012.07.16
JDBC 초기 설정  (0) 2012.07.16
JDBC 실습(1)  (0) 2012.06.20
JDBC 레코드 검색  (0) 2012.06.20
JDBC 실행 순서 정리  (0) 2012.06.20