class ConfigParser:
import org.xml.sax.helpers.DefaultHandler;
import java.util.Properties;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class ConfigParser extends DefaultHandler {
private Properties props;
private String currentName;
private StringBuffer currentValue = new StringBuffer();
public ConfigParser()
{
this.props = new Properties();
}
public Properties GetProps()
{
return this.props;
}
public void characters(char[] ch, int start, int length) throws SAXException
{
currentValue.append(ch,start,length);
}
public void endElement(String uri, String localName, String name) throws SAXException
{
props.put(currentName.toLowerCase(), currentValue.toString().trim());
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
currentValue.delete(0, currentValue.length());
currentName = qName;
}
}
class ParseXML:
import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class ParseXML {
private Properties props;
public Properties GetProps()
{
return this.props;
}
public void parse(String filename) throws Exception
{&l t;/p>
ConfigParser handler = new ConfigParser();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
SAXParser parser = factory.newSAXParser();
try
{
parser.parse(filename, handler);
props = handler.GetProps();
}
finally
{
factory = null;
parser = null;
handler = null;
}
}
}
class ReadConfigXML:
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)
{}
}
public String GetServerName()
{
return props.getProperty("servername");
}
public String GetServerPort()
{
return props.getProperty("serverport");
}
public String GetDatabaseName()
{
return props.getProperty("databasename");
}
public String GetUserName()
{
return props.getProperty("username");
}
public String GetPassword()
{
return props.getProperty("password");
}
}
class DBConnection:
import java.sql.*;
public class DBConnection {
private Connection conn;
private DBConnection()
{
}
public static DBConnection newInstance()
{
return new DBConnection();
}
public Connection GetConnection()
{
ReadConfigXML rcXML = new ReadConfigXML("E:/program/java/j2se/dbconfig.xml");
String url = "JDBC:MYSQL://"+rcXML.GetServerName()+":" + rcXML.GetServerPort() +"/" +rcXML.GetDatabaseName();
String username = rcXML.GetUserName();
String password = rcXML.GetPassword();
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,username,password);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
System.out.println(rcXML.GetServerName());
System.out.println(rcXML.GetServerPort());
System.out.println(rcXML.GetDatabaseName());
System.out.println(rcXML.GetUserName());
System.out.println(rcXML.GetPassword());
return conn;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = DBConnection.newInstance().GetConnection();
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
String sql = "select count(*) count from dbversion";
rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println("data count = " + rs.getInt("count"));
}
System.out.println("connect succ!");
}
catch(SQLException e)
{
}
}
}
-----------------------------------------------------------------------
XML:
<?xml version='1.0' encoding='utf-8'?>
<data>
<datasource>
<servername>
localhost
</servername>
<serverport>
3306
</serverport>
<databasename>
pbsnmdb
</databasename>
<username>
root
</username>
<password>
1234
</password>
</datasource>
</data>