为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

文件名: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

图片描述

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.5万
获赞与收藏
8507

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消