文件名:DBhelper.java
package com.db;
import java.io.File;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Iterator;
import java.util.Properties;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/*
- JDBC 连接数据库工具类
- XML配置文件连接数据库
*/
/** - 这个程序可以连接MySQL,Oracle,SQLServer数据库
- 当你需要连接MySQL数据库时,只需要修改配置文件db.xml,把
- Oracle,SQLServer用<!-- -->注释了,即可进行连接MySQL,其他两种数据库相同。
-
*/
public class DBhelper {//类的静态变量
private static String driver;
private static String url;
private static String username;
private static String password;
//创建一个私有的实例变量
private static Connection conn=null;
//负责加载驱动
//静态代码块在构造方法之前执行,仅仅执行一次,通常做类的初始化工作
//构造方法通常做对象的初始化工作,比如初始化对象的属性static{ try{ //加载db.xml属性文档 //使用Java xml解析技术去解析xml文档,dom/sax/dom4j/jdom //创建SAXReader的对象reader SAXReader reader=new SAXReader(); //通过reader对象的read方法加载db.xml文件,获取document对象 Document document=reader.read(new File("src/db.xml")); //通过document对象获取根节点connection Element connection=document.getRootElement(); //通过element对象的elementIterator方法获取迭代器 Iterator it=connection.elementIterator(); //遍历迭代器,获取根节点中的信息 while(it.hasNext()) { Element element=(Element)it.next(); String elementName=element.getName(); switch(elementName) { case "driver": driver=element.getStringValue(); break; case "url": url=element.getStringValue(); break; case "username": username=element.getStringValue(); break; case "password": password=element.getStringValue(); break; } } //加载驱动 Class.forName(driver); }catch(Exception e){ e.printStackTrace(); } } //构造方法私有化,处理本类之外,其他任何类都不能创建这个类的对象 private DBhelper() { } //获得数据库的连接对象。 public static Connection getConnection() throws Exception{ if(conn!=null) //说明conn已经实例化过 { return conn; }else{ conn=DriverManager.getConnection(url,username,password); return conn; } } }
测试文件名:Test.java
package com.test;
import java.sql.Connection;
import com.db.DBhelper;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Connection conn1=DBhelper.getConnection();
Connection conn2=DBhelper.getConnection();
if(conn1!=null)
{
System.out.println("数据库连接成功");
}
System.out.println(conn1==conn2);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
XML配置文件名:db.xml
<?xml version="1.0" encoding="UTF-8" ?>
<connection>
<!-- for mysql 连接MySql-->
<!--
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</url>
<username>root</username>
<password>root</password>
-->
<!-- for oracle 连接Oracle -->
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@localhost:1521:orcl</url>
<username>scott</username>
<password>tiger</password>
<!-- for mssql 连接SqlServer-->
<!--
<driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
<url>jdbc:sqlserver://localhost:1433;databaseName=test</url>
<username>sa</username>
<password>123456</password>
-->
</connection>
导入的架包:
dom4j-1.6.1.jar
mysql-connector-java-5.1.7-bin.jar
ojdbc6.jar
sqljdbc4.jar