큰 소가 쓴 JDBC 도구류

5721 단어 jdbc
일이 지나간 지 오래됐는데..한 3년 전.
그때를 기억해라. 이 큰 소(IBM 모 구조)는 UE에서 단숨에 이루어졌고 아무런 여분의 코드도 없었다. 심지어 주석을 쓰지 않아도 이 단락의 코드의 용도를 알 수 있었다. 지금 자세히 보면 비록 매우 기본적이지만 여전히 이 단락의 코드가 매우 시원하다는 것을 느낀다.붙이고 시간 나면 대충 한번...
package com.yinhai.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class JdbcUtil
{
	static{
	  String driver = "oracle.jdbc.driver.OracleDriver";
	  try{
	    Class.forName(driver);
	  }catch(Exception e){
	    e.printStackTrace();
	  }
	}
	public static Connection getConnection(){
	  String url = 
		"jdbc:oracle:thin:@192.192.192.239:1521:orcl";
	  String usr = "xajgyl";
	  String pwd = "xajgyl";
	  Connection con = null;
	  try{
	    con = DriverManager.getConnection(url,usr,pwd);
	  }catch(Exception e){
	    e.printStackTrace();
	  }
	  return con;
	}
	public static void close(ResultSet rs, Statement stmt,Connection con){
	   try{
	      if(rs!=null) rs.close();
	    }catch(Exception ex){
		  ex.printStackTrace();
		}
		try{
	      if(stmt!=null) stmt.close();
	    }catch(Exception ex){
		  ex.printStackTrace();
		}
		try{
	      if(con!=null) con.close();
	    }catch(Exception ex){
		  ex.printStackTrace();
		}
	}
	
	public static void printRs(ResultSet rs){
	  try{
	    StringBuffer sb = new StringBuffer();
		ResultSetMetaData meta = rs.getMetaData();
		int cols = meta.getColumnCount();
	    while(rs.next()){
		  for(int i=1;i<=cols;i++){
		    sb.append(meta.getColumnName(i)+"->");
			sb.append(rs.getString(i)+"  ");
		  }
		  sb.append("
"); } System.out.print(sb.toString()); }catch(Exception e){ e.printStackTrace(); } } }

다른 클래스:
package com.yinhai.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SQLTools
{
	public static void main(String[] args){
	  Connection con = null;
	  while((con=getConnection())==null){};
	  try{
	  	con.setAutoCommit(false);
	  }catch(Exception e){
	  	System.out.println(e.getMessage());
	  }
	  handleCommand(con);
	  JdbcUtil.close(null,null,con);
	  System.out.println("  !");
	}
	
	private static void handleCommand(Connection con){
	  String command = "";
	  boolean flag = true;
	  while(flag){
		  command = getCommand();
		  if("quit".equals(command)){
		    flag = false;
		  }else if("commit".equals(command) || "rollback".equals(command)){
		    handleCommit(con,command);
		  }else{
		    handleSQL(con,command);
		  }
    }
	}
	
	private static Connection getConnection(){
	  Connection con = null;
	  String url = "";
	  String usr = "";
	  String pwd = "";
	  url = prompt("   URL:");
    usr = prompt("      :");
	  pwd = prompt("     :");
	  try{
	    con = DriverManager.getConnection(url,usr,pwd);
	  }catch(Exception e){
	    System.out.println("    :"+e.getMessage());
	  }
	  return con;
	}
	 
	private static String getCommand(){
	  StringBuffer sb = new StringBuffer();
	  String command = "";
	  String message = "SQL->";
    boolean flag = true;
	  int c = 0;
	  while(flag){
		  if(c++!=0) message = c+"->";
	    sb.append(prompt(message)+" ");
		  command = sb.toString().trim();
		  if(command.endsWith(";")){
		    flag = false;
		  }
	  }
	  return command.substring(0,command.length()-1).trim();
	}
	
	private static void handleCommit(Connection con,String command){
	  try{
	    if("commit".equals(command)){
		    con.commit();
		  }else{
		    con.rollback();
		  }
	  }catch(Exception e){
	    System.out.println("  /    :"+e.getMessage());
	  }
	}
	
	private static void handleSQL(Connection con ,String command){
	  PreparedStatement ps = null;
	  ResultSet rs = null;
	  try{
	    ps = con.prepareStatement(command);
		  if(ps.execute()){
		    rs = ps.getResultSet();
		    JdbcUtil.printRs(rs);
		  }else{
		    System.out.println("    :"+ps.getUpdateCount()+" .");
		  }
	  }catch(Exception e){
	    System.out.println("      :"+e.getMessage());
	    try{
		    if(con!=null)con.rollback();
		  }catch(Exception ex){
		    ex.printStackTrace();
		  }
	  }
	}
	
	private static String prompt(String message){
	   BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
	   System.out.print(message);
	   String input = "";
	   try{
  		 input = in.readLine();
	   }catch(Exception e){
	     System.out.println("IO  :"+e.getMessage());
	   }
	   return input;
	}
}

좋은 웹페이지 즐겨찾기