常用公共类代码一之数据库的连接
来源:互联网 发布:2016年气象数据 编辑:程序博客网 时间:2024/06/05 07:55
在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!
一、数据库的连接,常用的方式有直接将那些要连接的参数放到java类中、将连接参数放到Properties文件中或者放到XML文件中,下面一一为大家描述
1、直接连接:
普通的配置方式public static Connection getConnection(){Connection conn=null;try {Class.forName("com.mysql.jdbc.Driver");String url="jdbc:mysql://127.0.0.1:3306/xinyuandb";String username="root";String password="123456";conn=DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}
2、通过Properties文件创建连接,好处,很灵活,不用在代码里面进行更改
创建jdbc.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/xinyuandb
username=root
password=123456
从properties文件中读取public static Connection getConnection(){Connection conn=null;Properties p=new Properties();try {//从当前线程加载p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties"));Class.forName(p.getProperty("driver"));conn=DriverManager.getConnection(p.getProperty("url"), p.getProperty("username"), p.getProperty("password"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}3、通过XML文件读取 创建jdbc.xml文件<?xml version="1.0" encoding="UTF-8"?><config> <jdbc-config> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://127.0.0.1:3306/xinyuandb</url> <username>root</username> <password>123456</password> </jdbc-config></config>创建javaBean类package com.common.db;public class JdbcBean { private String driver; private String url; private String username; private String password; public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}创建XML解析类package com.common.db;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class XmlConfigReader {private static XmlConfigReader instance;private JdbcBean bean=null;//调用构造函数进行XML文件解析private XmlConfigReader(){SAXReader reader=new SAXReader();try {Document doc=reader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.xml"));Element root=doc.getRootElement();Element first=root.element("jdbc-config");String driver=first.element("driver").getText();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进行管理:package com.common.db;import java.sql.Connection;/** * 线程管理 * @author Administrator * */public class ConnectionManager {//使用线程变量对Connection进行管理private static ThreadLocal<Connection> local=new ThreadLocal<Connection>();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);//trueSystem.out.println(conn3==conn4);//false}}
这样,数据库操作的公共类基本上实现了,大家在项目中就可以进行调用了,当然,还有一些基本的流的关闭和事物的处理,代码如下: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 ) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}public static void beginTransaction(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false); //手动提交}}}catch(SQLException e) {}}public static void commitTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.commit();}}}catch(SQLException e) {}}public static void rollbackTransaction(Connection conn) {try {if (conn != null) {if (!conn.getAutoCommit()) {conn.rollback();}}}catch(SQLException e) {}}public static void resetConnection(Connection conn) {try {if (conn != null) {if (conn.getAutoCommit()) {conn.setAutoCommit(false);}else {conn.setAutoCommit(true);}}}catch(SQLException e) {}}
- 常用公共类代码一之数据库的连接
- 常用的数据库公共类
- 常用公共代码二之分页代码的实现
- 数据库常用代码连接
- jdbc常用连接数据库的代码
- java中常用的连接数据库代码
- 常用数据库的Jdbc连接代码
- 各种JDBC连接数据库的常用代码
- 我的代码总结之.NET连接数据库对象分析一dataAdaper
- 几种常用PHP连接数据库的代码
- java连接几种常用数据库的代码
- 几种常用PHP连接数据库的代码示例
- 常用数据库的连接
- 常用数据库的连接
- C#操作数据库的常用公共方法!
- 连接数据库的代码
- 数据库的连接代码
- 数据库的连接代码
- TClientdataset使用技巧汇总
- 树形控件比较
- Delphi中枚举类型的应用
- 自己写的cnCheckTreeView操作函数(数据库分级函数)测试通过(XP+D2009)
- CentOS显示器分辨率配置
- 常用公共类代码一之数据库的连接
- 2012.7.10计划
- hdu1160
- 深入Delphi下的DLL编程
- Delphi中判断一个文件是不是JPG图片文
- Windows Mobile引路蜂地图开发示例:第一个地图应用
- CnPack20090801更新包
- linux下安装中文man手册
- Delphi获取汉字首字母(D2009测试通过)