
/*Class Test
 *author Holger Engelmann
 *E-Mail hengelma@imn.htwk-leipzig.de
 *
 */


import java.io.*;
import java.sql.*;
import java.util.Vector;

public class test {

	public static void main(String args[])
	{
	    ResultSet res;
	    Vector cache;
	 	int i,colCount;
		colCount=i=0;
		String url = "jdbc:oracle:thin:@goliath.imn.htwk-leipzig.de:1521:IMNLEHRE";
		Connection con;
		String createString;
		createString = " "; //Hier das Qury eintragen
		Statement stmt;
		cache = new Vector();  //jetzt noch den Cache initialisieren
		boolean Fehler;
		Fehler = false;


		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			}
			catch(java.lang.ClassNotFoundException e)
				{
				System.err.print("ClassNotFoundException: ");
				System.err.println(e.getMessage());
				Fehler=true;
				}

		try {
				con = DriverManager.getConnection(url,"userid", "Paswort");
				stmt = con.createStatement();
	   			res = stmt.executeQuery(createString);

	   			/* Nun gut da die Leute von Oracle in Ihrem ResultSet alles rausgenommen haben, was man braucht hier eine Methode wie
	   			 * Wie man ein ResultSet ausliest und in ein Array (2D) speiichern kann
	   			 */

	   			 /*Als erstes lassen wir uns die Metas ausgeben um die Anzahl der Spalten im ResultSet zu erfahren
	   			  * Obwohl man die kennen sollte -> oder macht ihr einfach so ein Select ?
	   			  */
	    	    ResultSetMetaData meta = res.getMetaData();
     			colCount = meta.getColumnCount();
     			//nun gehen wir Zeile für Zeile durch ResultSet und lesen die Infos aus!
				while (res.next())
					{
					 String [] element = new String[colCount];
					 for (i=0;i<colCount;i++)
						 	{
									//Wichtig ist das i+1 da die Spalten im ResultSet bei 1 anfangen!!!
									element[i] = res.getString(i+1);
							}
						//Element dem Vektor hinzufügen
						cache.addElement(element);
					}
				stmt.close();
				con.close();

			}
			catch(SQLException ex)
			{
				System.err.println("SQLException: " + ex.getMessage());
				Fehler=true;
			}
			/*Mal für den Fall, dass Alles gut gegangen ist!
			 *Jetzt könne wir die Informationen aus dem Vektor abrufen. Die Anzahl der Elemente können mit cach.size() erfahren( liefert int)
			 *An die einzelnen Elemente kommt ihr mit get(int X) liefert das Object an der Stelle X;
			 */
			if (!Fehler)
			{
				String [][] Temparray = new String[cache.size()][colCount];
				for (i=0;i<cache.size();i++)
					{
						//Typumwandlung wichtig, sonst kommt es nicht durch den Compiler!
						String[] element= (String[])cache.get(i);
						for (int j=0;j<colCount;j++)
							{
								Temparray[i][j]=element[j];
							}
					}
			}
			//Cache löschen wegen Speicher und so
			cache.clear();
			/*io jetzt stehen alle Werte aus dem Select im Array. Für Querys ohne Rückgabewerte (insert, Update ..) empfielt sich anstelle
			 * von stmt.executeQuery(createString); -> stmt.executeUpdate(createString);
			*/
		}
}

