Vollständiger Quell-Code für die Klasse "OraDBConnect"
/****************************************************************************************
* Klasse zur Datenbank-Kommunikation *
* *
****************************************************************************************/
import java.sql.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
public class OraDBConnect {
// Objekt für Datenbankzugriff
private Connection conn = null;
/************************************************************************************
* Verbindungsaufbau mit Oracle-Datenbank *
* *
* @connect_string: Connect-String für Drivermanager-Objekt *
************************************************************************************/
public OraDBConnect(String connect_string) throws SQLException {
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(connect_string);
}
catch (SQLException e) {
if (e instanceof SQLException)
throw (SQLException)e;
else
throw new SQLException("Folgender Fehler ist aufgetreten: " + e);
}
}
/************************************************************************************
* Verbindungsabbau zu Oracle-Datenbank *
* *
************************************************************************************/
public void OraDBClose() throws SQLException {
conn.close();
}
/************************************************************************************
* SQL-Abfrage mit Datenrückgabe in Form einer "String-Liste" *
* *
* @sql : SQL-Statement *
* @args: Argumentliste mit den Spaltennamen der abzufragenden Werte *
* @mode: Anzahl der zurückzugebenden Datensätze *
* mode==0 -> alle Datensätze der Ergebnismenge; *
* mode!=0 -> der erste Datensatz der Ergebnismenge *
************************************************************************************/
public Vector OraDBgetResult(String sql, String[] args, int mode)
throws SQLException
{
Vector result = new Vector();
Statement sment = conn.createStatement();
ResultSet rs = sment.executeQuery(sql);
// wenn Ergebnismenge nicht leer ist
if (rs.next()) {
do {
// alle angeforderten Attribute der Ergebnismenge eines DS zur Liste hinzufügen
for (int i=0; i<args.length; i++) {
// falls NULL-Werte zurückgegeben werden, werden diese durch Leer-Strings ersetzt
if (rs.getString(args[i]) != null) {
result.addElement(rs.getString(args[i]));
}
else {
result.addElement("");
}
}
} while (rs.next() && (mode == 0));
}
// falls Ergebnismenge leer ist
else {
result = null;
}
rs.close();
sment.close();
return(result);
}
/************************************************************************************
* SQL-Anweisung ausführen (INSERT, UPDATE, DELETE) mit Rückgabe der Anzahl *
* betroffener Datensätze *
* *
* @sql: SQL-Statement *
************************************************************************************/
public int OraDBexecuteUpdate(String sql)
throws SQLException
{
try {
conn.setAutoCommit(false);
Statement sment = conn.createStatement();
int result = sment.executeUpdate(sql);
conn.commit();
conn.setAutoCommit(true);
// Rückgabewert ist die Anzahl der eingefügten/geänderten/gelöschten Datensätze
return result;
}
catch (SQLException e) {
conn.rollback();
conn.setAutoCommit(true);
throw (SQLException)e;
}
}
}