首页 > 开发 > JAVA > 正文

Java ---XML配置文件连接数据库

2016-05-20 14:39:02  来源:慕课网
  文件名: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