JAVA/读取XML文件中SQLSERVER数据源配置(sax)

 

XML文件:mssql.xml
<?xml version="1.0" encoding="UTF-8"?>
<data>
<datasource>
<servername>localhost</servername>
<serverport>1433</serverport>
<databasename>pubs</databasename>
<username>sa</username>
<password></password>
</datasource>
</data>

XML配置文件解析器:ConfigParser.java
package com.onechen.data.config;

import java.util.Properties;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

class ConfigParser extends DefaultHandler {
//定义一个Properties 用来存放属性值
private Properties props;
private String currentName;
private StringBuffer currentValue = new StringBuffer();

// 构建器初始化props
public ConfigParser() {
           this.props = new Properties();
}

public Properties getProps() {
           return this.props;
}

// 定义开始解析元素的方法. 这里是将<xxx>中的名称xxx提取出来.
public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
           currentValue.delete(0, currentValue.length());
           currentName = qName;
}

// 这里是将<xxx></xxx>之间的值加入到currentValue
public void characters(char[] ch, int start, int length)
            throws SAXException {
           currentValue.append(ch, start, length);
}

// 在遇到</xxx>结束后,将之前的名称和值一一对应保存在props中
public void endElement(String uri, String localName, String qName)
            throws SAXException {
           props.put(qName.toLowerCase(), currentValue.toString().trim());
}

}

XML配置文件读取处理:ParseXML.java

package com.onechen.data.config;

import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

class ParseXML {
// 定义一个Properties 用来存放属性值
private Properties props;

public Properties getProps() {
           return this.props;
}

public void parse(String filename) throws Exception {
           // 将我们的解析器对象化
           ConfigParser handler = new ConfigParser();
           // 获取SAX工厂对象
           SAXParserFactory factory = SAXParserFactory.newInstance();
           factory.setNamespaceAware(false);
           factory.setValidating(false);
           // 获取SAX解析
           SAXParser parser = factory.newSAXParser();
           try {
            // 将解析器和解析对象xml联系起来,开始解析
            parser.parse(filename, handler);
            // 获取解析成功后的属性
            props = handler.getProps();
           } finally {
            factory = null;
            parser = null;
            handler = null;
           }
}
}

读取XML配置文件:ReadConfigXml.java

package com.onechen.data.config;

import java.util.Properties;

public class ReadConfigXml {
private Properties props;

public ReadConfigXml(String url) {
           ParseXML myRead = new ParseXML();
           try {
            myRead.parse(url);
            props = new Properties();
            props = myRead.getProps();
           } catch (Exception e) {
            e.printStackTrace();
           }
}

public String getServerName() {
           return props.getProperty("servername");      //getProperty("<标签名>"),与XML文档里标签名相关联
}                                                                             //另:标签名在这里使用时,统一为小写

public String getServerPort(){
           return props.getProperty("serverport");        //getProperty("<标签名>"),与XML文档里标签名相关联
}

public String getDatabaseName() {
           return props.getProperty("databasename"); //getProperty("<标签名>"),与XML文档里标签名相关联
}

public String getUserName() {
           return props.getProperty("username");        //getProperty("<标签名>"),与XML文档里标签名相关联
}

public String getPassWord() {
           return props.getProperty("password");        //getProperty("<标签名>"),与XML文档里标签名相关联
}

}

数据库连接类:DBConnection.java

package com.onchen.data.operator;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.onechen.data.config.ReadConfigXml;

public class DBConnection {

private Connection con;

private DBConnection() {
  
}

public static DBConnection newInstance(){
           return new DBConnection();
}

public Connection getConnection(){
           ReadConfigXml r = new ReadConfigXml("mssql.xml");    //读取xml文件中数据库相关信息
           String url = "jdbc:microsoft:sqlserver://"+r.getServerName()+":"+r.getServerPort()
                              +";DatabaseName="+r.getDatabaseName();
           String username = r.getUserName();
           String password = r.getPassWord();
           try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            con = DriverManager.getConnection(url, username, password);
           } catch (ClassNotFoundException e) {
            e.printStackTrace();
           } catch (SQLException e) {
            e.printStackTrace();
           }
           return con;
}

           //测试连接
           public static void main(String args[]){
            Connection con = DBConnection.newInstance().getConnection();
           }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值