簡體   English   中英

Java從XML文件讀取JDBC連接

[英]java read JDBC connection from XML file

任何人都知道我該如何編寫將具有JDBC連接(用戶名,passwd,驅動程序,連接)的XMl文件,然后讀取該XML以連接到db?

編寫XML的方法如下:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <jdbc>
        <url>jdbc:mysql://localhost:3306/javabase</url>
        <driver>com.mysql.jdbc.Driver</driver>
        <username>java</username>
        <password>d$7hF_r!9Y</password>
    </jdbc>
</config>

假設它名為config.xml並放置在類路徑的根目錄中,下面是一個示例,說明如何在JAXP和Xpath的幫助下加載它:

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(input));
XPath xpath = XPathFactory.newInstance().newXPath();
String url = (String) xpath.compile("//config//jdbc//url").evaluate(document, XPathConstants.STRING);
String driver = (String) xpath.compile("//config//jdbc//driver").evaluate(document, XPathConstants.STRING);
String username = (String) xpath.compile("//config//jdbc//username").evaluate(document, XPathConstants.STRING);
String password = (String) xpath.compile("//config//jdbc//password").evaluate(document, XPathConstants.STRING);
// ...

與屬性文件相比,它只是非常冗長。 這是此類屬性文件的示例:

jdbc.url = jdbc:mysql://localhost:3306/javabase
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username = java
jdbc.password = d$7hF_r!9Y

假定它名為config.properties並被放置在類路徑的根目錄中(或它的根路徑已添加到類路徑中),這是從類路徑中加載它的方法:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
String url = properties.getProperty("jdbc.url");
String driver = properties.getProperty("jdbc.driver");
String username = properties.getProperty("jdbc.username");
String password = properties.getProperty("jdbc.password");
// ...

我經常使用Spring Framework來外部化連接池的配置和jdbc URL的設置。

看一下commons-configuration 您可以使用它讀取多種配置格式。

也就是說,對於數據庫連接屬性,我認為簡單的鍵值.properties文件更好。

您可以定義自己的XML模式,將其綁定到Java bean,然后通過JAXB進行解析。 然后,您只需調用bean的getter來建立連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM