JDBC 工具类
openkk
12年前
(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("\n"); } 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; } }