String url=first.element("url").getText();
String username=first.element("username").getText();
String password=first.element("password").getText();
bean=new JdbcBean();
bean.setDriver(driver);
bean.setUrl(url);
bean.setUsername(username);
bean.setPassword(password);
} catch (DocumentException e) {
e.printStackTrace();
}
}
public synchronized static XmlConfigReader getInstance(){
if(instance==null){
instance=new XmlConfigReader();
}
return instance;
}
public JdbcBean getJdbeanBean(){
return bean;
}
}
// 从XML文件中读取配置取得同一Connection
// static Connection conn=null;
// static{
// JdbcBean jdbc=XmlConfigReader.getInstance().getJdbeanBean();
// try {
// Class.forName(jdbc.getDriver());
// conn=DriverManager.getConnection(jdbc.getUrl(), jdbc.getUsername(),jdbc.getPassword());
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
//从XML文件中读取配置
public static Connection getConnection(){
Connection conn=null;
JdbcBean jdbc=XmlConfigReader.getInstance().getJdbeanBean();
try {
Class.forName(jdbc.getDriver());
conn=DriverManager.getConnection(jdbc.getUrl(), jdbc.getUsername(),jdbc.getPassword());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
有时候我们想取得Connection的单实例,又不会影响到其安全性,我们可以通过线程ThreadLocal来对Connection进行管理:
[java]
import java.sql.Connection;
/**
* 线程管理
* @author Administrator
*
*/
public class ConnectionManager {
//使用线程变量对Connection进行管理
private static ThreadLocal
public static Connection getConnection(){
Connection conn=local.get();
if(conn==null){
conn=DbUtil.getConnection();
local.set(conn);
}
return conn;
}
public static void main(String[] args) {
Connection conn1=ConnectionManager.getConnection();
Connection conn2=ConnectionManager.getConnection();
Connection conn3=DbUtil.getConnection();
Connection conn4=DbUtil.getConnection();
System.out.println(conn1==conn2);//true
System.out.println(conn3==conn4);//false
}
}
这样,数据库操作的公共类基本上实现了,大家在项目中就可以进行调用了,当然,还有一些基本的流的关闭和事物的处理,代码如下:
[java]
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement pstmt) {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs ) {