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;
        }
    }
}