JDBC例子之Oracle篇
阿新 • • 發佈:2018-11-19
package util; import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; /** * @author Administrator * param1:driver type:String * param2:url type:String * param3:user type:String * param4:pw type:String * param5:con type:Connection * param6:pstmt type:PreparedStatememt * param7:rs type:ResultSet * param8:sql type:String * 步驟一: * 設定常量 * 二: * 載入驅動,得到與資料庫的連線物件 * 三: * 宣告sql語句,得到語句物件 * 四: * 執行sql語句 * 五: * 返回執行結果 * 六: * 處理返回結果 * while(rs.next()){ * String user = rs.getString(1); * String pw = rs.getString(2); * } * 七: * 關閉物件,依次為rs,pstmt,con * */ public class DBUtil implements Serializable { /** * */ private static final long serialVersionUID = 1L; private static String DRIVER = "oracle.jdbc.dirver.OracleDirver"; private static String URL = "jdbc:oracle:thin:@localhost:1521:MyDataBase"; private static String USER = "scott"; private static String PASSWORD = "tiger"; Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; public void setDriver(String driver){ DBUtil.DRIVER = driver; } public void setURL(String url){ DBUtil.URL = url; } public void setUser(String user){ DBUtil.USER = user; } public void setPassword(String password){ DBUtil.PASSWORD = password; } static{ try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private Connection getConnection(){ try { con = DriverManager.getConnection(URL,USER,PASSWORD); } catch (SQLException e){ e.printStackTrace(); } return con; } //獲取語句物件 private PreparedStatement getPrepareStatement(String sql){ try { pstmt = getConnection().prepareStatement(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return pstmt; } //給pstmt的sql語句設定引數 private void setParams(String sql,Object...params){ pstmt = getPrepareStatement(sql) ; for(int i = 0; i<params.length; i++){ try { pstmt.setObject(i+1,params[i]); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //執行資料查詢操作時,將返回的結果封裝到List物件中 public List<Map<String,String>> getList(String sql,Object...params){ List<Map<String,String>> list = new ArrayList<Map<String,String>>(); try{ setParams(sql,params); rs = pstmt.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); while(rs.next()){ Map<String,String> m = new HashMap<String,String>(); for(int i = 0;i<rsmd.getColumnCount(); i++){ String colName = rsmd.getColumnName(i+1); m.put(colName,rs.getString(colName)); } list.add(m); } }catch(SQLException e){ e.printStackTrace(); }finally{ close(); } return list; } //執行資料庫查詢操作時,將返回的結果封裝到List物件 public Map<String,String> getMap(String sql,Object...params){ List<Map<String,String>> list = getList(sql,params); if(list.isEmpty()){ return null; }else{ return (Map<String,String>)list.get(0); } } public int update(String sql,Object...params){ int recNo = 0; try{ setParams(sql,params); recNo = pstmt.executeUpdate(); }catch(SQLException e){ e.printStackTrace(); }finally{ close(); } return recNo; } private void close(){ try{ if(rs!=null){ rs.close(); } if(pstmt!=null){ pstmt.close(); } if(con!=null){ con.close(); } }catch(SQLException e){ e.printStackTrace(); } } }