Nie chciało mi się przerabiać mojego więc będziesz miał tak trochę ładniej ;-)
Klasa Singelton do Łączenia się z bazą danych:
package pl.kaziuuu.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import java.io.IOException;
public class OracleConnection {
private static Connection connection;
private OracleConnection() {
}
public static Connection getConnection() throws ClassNotFoundException,
SQLException, ParserConfigurationException, SAXException, IOException {
Configuration conf = new Configuration("conf.xml");
Properties props = new Properties();
String dbURL = "jdbc:oracle:thin:@" + conf.getHost() + ":"
+ conf.getPort() + ":" + conf.getSid();
if (connection == null) {
Class.forName("oracle.jdbc.driver.OracleDriver");
props.put("user", conf.getUsername());
props.put("password", conf.getPassword());
connection = DriverManager.getConnection(dbURL, props);
}
return connection;
}
}
Klasa odczytująca konfiguracje bazy danych z pliku xml:
package pl.kaziuuu.database;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.InputSource;
import java.io.IOException;
public final class Configuration extends DefaultHandler {
private String host = "";
private String password = "";
private String username = "";
private String sid = "";
private String port = "";
private int what = 0;
private final static int HOST=1;
private final static int PASSWORD=2;
private final static int USERNAME=3;
private final static int SID=4;
private final static int PORT=5;
public Configuration(String fileName) throws ParserConfigurationException,
SAXException, IOException {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxFactory.newSAXParser();
saxParser.parse(new InputSource(fileName), this);
}
public void startElement(String uri, String localName,
String qName, Attributes atts) throws SAXException {
if(qName.equalsIgnoreCase("host"))what=HOST;
if(qName.equalsIgnoreCase("password"))what=PASSWORD;
if(qName.equalsIgnoreCase("username"))what=USERNAME;
if(qName.equalsIgnoreCase("sid"))what=SID;
if(qName.equalsIgnoreCase("port"))what=PORT;
}
public void characters(char ch[], int start,
int length) throws SAXException {
String data = new String(ch, start, length).trim();
switch(what){
case HOST:{
if(!data.equals("")){
host=new String(data);
}
break;
}
case PASSWORD:{
if(!data.equals("")){
password=new String(data);
}
break;
}
case USERNAME:{
if(!data.equals("")){
username=new String(data);
}
break;
}
case SID:{
if(!data.equals("")){
sid=new String(data);
}
break;
}
case PORT:{
if(!data.equals("")){
port=new String(data);
}
break;
}
}
}
public String getHost() {
return host;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public String getSid() {
return sid;
}
public String getPort() {
return port;
}
}
Plik konfiguracyjny xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<conf>
<host>host.pl</host>
<port>1521</port>
<sid>sid</sid>
<username>lol</username>
<password>lol</password>
</conf>
W pliku xml zmieniasz sobie tylko parametry i możesz się łączyć z bazą danych na dowolnym serwerze :d Baza może być postawiona na dowolnym komputerze w sieci, nie musi być na tym na którym jest zainstalowana aplikacja. Przykład ten jest na bazę Oracle ale przerobienie go na inne bazy nie stanowi problemu, dodajesz jeszcze dwie klasy MySqlConnection, PosgreConnection, klasą Factory do tworzenia instancji połączenia do konkretnej bazy i masz przenośną aplikacje :-)