java 连接数据库公共类,常用公共类代码一之数据库的连接

在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!

一、数据库的连接,常用的方式有直接将那些要连接的参数放到java类中、将连接参数放到Properties文件中或者放到XML文件中,下面一一为大家描述

1、直接连接:

[java]

        普通的配置方式

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;

}  www.2cto.com

2、通过Properties文件创建连接,好处,很灵活,不用在代码里面进行更改

创建jdbc.properties文件

driver=com.mysql.jdbc.Driver

url=jdbc\:mysql\://127.0.0.1\:3306/xinyuandb

username=root

password=123456

[java]

        从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 block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

3、通过XML文件读取

创建jdbc.xml文件

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/xinyuandb

root

123456

创建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进行管理:

[java]

package com.common.db;

import java.sql.Connection;

/**

* 线程管理

* @author Administrator

*

*/

public class ConnectionManager {

//使用线程变量对Connection进行管理

private static ThreadLocal local=new 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 ) {

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) {}

}

作者:HarderXin

http://www.dengb.com/Javabc/529929.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/529929.htmlTechArticle在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值