JDBC例子之Oracle篇

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();
		}
	}

}

猜你喜欢

转载自blog.csdn.net/YAN_HUAXIANGMO/article/details/77651964