# Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung



## dior (22. Sep 2011)

Hi,

ich mach gerade meine ersten Versuche mit Java und OracleDBVerbindungen.

Ich habe folgendes Programm:

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.io.*;
import java.sql.*;


public class OracleUserAbfragen {
    public static void main(String args[]) throws ClassNotFoundException, SQLException{
        
 
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(
        "jdbc:oracle:thin:@gi.db.at:1521:CP1", "User", "TEST");
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
      //ResultSet rset0 
    ResultSet rset = stmt.executeQuery("Select * From dba_Users where USERNAME = 'TESTUSER'");
    
    
    System.out.println(rset.getString(1));
    
    stmt.close();
    conn.close();

         
    }
}
```

Jetzt habe ich folgendes Problem:

1)
 wie kann ich mir das Ergebnis (also den User in diesem Fal) anzeigen lassen? 
ich bekomme immer folgenden Fehler:


> Exception in thread "main" java.sql.SQLException: ResultSet.next wurde nicht aufgerufen
> at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
> at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
> ...




2)
  wenn ich das Programm starte bekomme ich immer 3 -- APPLET Errors --


> The applet is attempting to invoke java/lang/System.getProperty() operation on user.name





> The applet is attempting to  connect to gi.db.at





> The applet is attempting to  connect to jar:file/C:/ ...... /lx200b2.glb



wenn ich die alle 3 erlaube mit "allow" dann läuft alles soweit durch

aber wie bekomme ich die 3 weg damit ich nicht immer bestätigen muss?

3)
Das Programm beendet sich nicht. Ich muss es immer händisch abbrechen. (Cancel running task)
Wie kann ich das noch machen das es nach dem sql und dem connection close den task selbst beendet?

danke für eure hilfe!

:rtfm:


----------



## Deros (22. Sep 2011)

zu 1) 
z.b.: 

```
while (rset.next()) {
				 System.out.println(rset.getString(1)); // wobei ich immer den spaltennamen angeben würde
			}
```

zu3) normal sollte es das aber wenn du alles schließt, resultSet hat auch ein close() aber glaube nicht das es alleine da dran liegt....musst mal debuggen was er noch macht


----------



## DerEisteeTrinker (22. Sep 2011)

zu 1.)
ich würde da ein if anstatt eines while meines Vorredners nehmen

zu 2.)
vllt die Anwendung nicht als Applet starten, denn die Anwendung sieht nicht nach nem Applet aus. Sondern nach nem Stand-Alone Programm.

zu 3.)
das liegt daran, dass er bei Zeile 21 rausspringt ohne die Verbindung zu schließen und solange die offen ist, bleibt der Thread aktiv


----------



## dior (22. Sep 2011)

Erstmal danke für die 2 bisherigen Antworten!

Punkt 1 hat mit while bzw. auch mit if funktioniert 

zu Punkt 2: ich starte das programm (sollte kein applet sein sondern eben wie von DerEisteeTrinker erwähnt eigenständig)
ich drücke in netbeans die Str+F6 taste zum starten....
keine Ahnung warum er was mit applet machen will ???:L

zu punkt 3:
warum springt er nach zeile 21 raus? das close() kommt ja dannach?


----------



## nillehammer (22. Sep 2011)

> zu punkt 3:
> warum springt er nach zeile 21 raus? das close() kommt ja dannach?


Du hast next() vorher nicht aufgerufen. Desweben fliegt dort die SQLException. Der Code, der danach kommt (die close-Aufrufe), wird dann nicht mehr abgearbeitet. Um sowas zu vermeiden, sollte man die closes in einem try-(catch)-*finally* machen. Damit werden Sie auf jeden Fall aufgerufen.


----------



## dior (22. Sep 2011)

So, ich hab jetzt ein try-catch-finally eingebaut. Dannach sah alles noch gleich aus, aber als ich probiert habe nach dem close(); noch etwas zu machen kam die Fehlermeldung das die Connection getrennt ist. 
Es wird anscheinend nur das Programm nicht geschlossen.... System.exit(0); sollte das ändern! 



Jetzt bleibt nur noch das Problem mit dem Applet alert obwohl ich gar kein applet habe?!?! ???:L


----------



## SlaterB (22. Sep 2011)

> wenn ich das Programm starte bekomme ich immer 3 -- APPLET Errors --

wie und wo startest du denn dein Progamm, zufällig in einer IDE wie Eclipse, zufällig versehentlich mit 
'Run as Applet' statt 'Run as Application', sofern überhaupt möglich?

oder fange mit einer neuen Klasse nochmal neu an, zunächst nur mit 'Hello Word', geht das ohne Fehlermeldung?
wann kommen die Fehler rein, wenn du bestimmte Klassen wie  Connection mit reinnimmst?
wenn du ganz konkret eine OracleDriver-Verbindung aufbaust?

edit:
> ich drücke in netbeans die Str+F6 taste zum starten....
aha, und ist das dann bei allen Programmen so?
gibts eigentlich F9?


----------



## dior (22. Sep 2011)

nein, das ist nur genau bei diesem!

bei allen anderen bekomme ich keinen applet alert (sollen ja auch keinen applets sein)


----------



## SlaterB (22. Sep 2011)

Oracle JDBC driver initilalize an applet in the background 
https://forums.oracle.com/forums/thread.jspa?threadID=948604

verlinkt auf 'Solution'
Some files and folders are added to the .Jar files after passing through InterScan Web Security Suite/Appliance (IWSS/IWSA)
hmm

edit:
bei google-Suche  [c]oracledriver 	"The applet is attempting to invoke"[/c]
ist dieser Thread hier Platz 1, mein genannter Link Platz 2, mehr gibts nicht


----------



## dior (22. Sep 2011)

Danke für die Links... so wie es aussieht kann ich hier nicht viel machen da ich keinen Zugriff zur Sicherheitssoftware habe 


Punkt 3 ist aber wieder aktuell... System.exit(0) ist keine option, weil ich die Klasse voneiner anderen Anwendung mitels GUI aufrufen will und da beendet er mir auch die GUI.

Es scheint nach wie vor so als ob die connection nicht richtig geschlossen wird.
Bzw. was ich habe, ich rufe die Klasse mit einer Manuellen eingabe auf. Beim ersten durchlauf funktioniert es und ich kann eine Meldung ausgeben ob der User vorhanden ist oder nicht. Wenn ich aber eine 2. Abfrage machen will, läuft das Programm nichtmehr durch und es wird immer das Ergebnis der ersten Abfrage angezeigt..


----------



## DerEisteeTrinker (22. Sep 2011)

dann führt er den Algorithmus nur einmal aus. Debugge das Programm einfach mal und schaue nach, welche Verarbeitungen er aufruft und ob er wirklich die Anfrage an die Datenbank nochmal ausführt


----------



## dior (22. Sep 2011)

das debuggen hat geholfen!

ich musste den imput nochmal neu setzen innerhalb des try blocks!


jetzt bin ich bis auf die applet alert meldungen zufrieden aber die werde ich wohl in kauf nehmen müssen ;(


Vielen Dank für eure Hilfe!!!


----------



## DerEisteeTrinker (22. Sep 2011)

Wieso musstest du den Input neu setzen? Dafür hast du doch sicher nen Parameter in der Methode oder hast das etwa über static Variablen gelöst?


----------

