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();
}
}
}
JDBC例子之Oracle篇
猜你喜欢
转载自blog.csdn.net/YAN_HUAXIANGMO/article/details/77651964
今日推荐
周排行