Blind Guardian
Grünschnabel
Hi Leute,
Habe ein kleines Problem mit einem Progrämmchen. Zum Vorwort. Mein Programm öffnet ein Frame, wo Kundenamen drin stehen, anhand des Buttons den ich drücke werden für den jeweiligen Kunden entsprechende SQL-Befehle aus einer Datei in einen Vektor gegeben.
Wurde ein Button gedrückt folgt ein neuer Frame, dort sind Buttons für verschiedene Server. Wenn ich einen Button drücke erfolgt nun die Verbindung zur Datenbank und das Senden der Befehle.
Natürlich kann es vorkommen, das ein Befehl mal falsch geschrieben wurde oder ein kleiner Fehler drin ist und daher eine SQL Exception geworfen wird. In diesem Fall öffnet sich ein Frame, wo der man im oberen Panel den falschen Befehl sowie die Fehlermeldung erkennen kann. In diesem frame befindet sich eine TextArea, wo der korrekte Befehl eingegeben werden soll und dann per Bestätigung an die Datenbank gesendet wird.
Mein Problem liegt nun darin, das die Exception zwar richtig geworfen wird und der Frame auch aufgeht, doch leider wartet der try Block nicht bis ich den Befehl korrigiert eingegeben habe, sondern sendet gleich alle weiteren Befehle. Und wenn das Update dann abgeschlossen ist, kann es schon zu spät sein um die Befehle zu senden.
Mein Quellcode sieht für den Button des Servers so aus...
Ich habe es schon mit flags probiert, klappt aber nicht so wirklich. Ein Kumpel hat gesagt ich soll es mit Threads probieren, doch leider habe ich von Threads überhaupt keine Ahnung. Ich weiss zwar wie ich nen simples Programm schreibe wo zwei Threads bisschen was machen, aber in dieser etwas komplexeren Art habe ich meine Probleme.
Vielleicht kann mir jemand von euch etwas unter die Arme greifen, ich wäre euch sehr dankbar.
-MfG- Danilo
Edit: im Endeffekt sollte der try Block, wenn eine Exception geworfen wird, solange warten bis ich den Frame in der Exception bestätigt habe.
Habe ein kleines Problem mit einem Progrämmchen. Zum Vorwort. Mein Programm öffnet ein Frame, wo Kundenamen drin stehen, anhand des Buttons den ich drücke werden für den jeweiligen Kunden entsprechende SQL-Befehle aus einer Datei in einen Vektor gegeben.
Wurde ein Button gedrückt folgt ein neuer Frame, dort sind Buttons für verschiedene Server. Wenn ich einen Button drücke erfolgt nun die Verbindung zur Datenbank und das Senden der Befehle.
Natürlich kann es vorkommen, das ein Befehl mal falsch geschrieben wurde oder ein kleiner Fehler drin ist und daher eine SQL Exception geworfen wird. In diesem Fall öffnet sich ein Frame, wo der man im oberen Panel den falschen Befehl sowie die Fehlermeldung erkennen kann. In diesem frame befindet sich eine TextArea, wo der korrekte Befehl eingegeben werden soll und dann per Bestätigung an die Datenbank gesendet wird.
Mein Problem liegt nun darin, das die Exception zwar richtig geworfen wird und der Frame auch aufgeht, doch leider wartet der try Block nicht bis ich den Befehl korrigiert eingegeben habe, sondern sendet gleich alle weiteren Befehle. Und wenn das Update dann abgeschlossen ist, kann es schon zu spät sein um die Befehle zu senden.
Mein Quellcode sieht für den Button des Servers so aus...
Code:
if (actionEvent.getSource().equals(alpha))
{
try
{ connect = "jdbc:oracle:thin:"+user+"/"+pwd+"@"+db_host2+":"+db_port+":"+db;
Connection update = DriverManager.getConnection(connect);
for(int z=0;z<ziel_vector.size();z++)
{
sqlOrder = (String)ziel_vector.elementAt(z);
try
{
Statement st_update = update.createStatement();
ResultSet rs_update = st_update.executeQuery(sqlOrder);
}
catch (SQLException exceptionMessage)
{
correctionWindow.setSize(600,200);
java.awt.Container contentPane = correctionWindow.getContentPane();
correctionWindow.setTitle("Korrekturframe");
wrongOrder = new JLabel("SQL-Befehl: "+sqlOrder,JLabel.CENTER);
errorMessage = new JLabel("Fehler: "+exceptionMessage,JLabel.CENTER);
request = new JLabel("Bitte korrigieren und bestätigen",JLabel.CENTER);
OK2 = new JButton("Bestätigung");
Break = new JButton("Abbruch/Exit");
newOrderArea = new JTextArea(5,50);
scrollPane = null;
Font jTextAreaFont = new Font("arial", Font.TRUETYPE_FONT, 12);
newOrderArea.setFont(jTextAreaFont);
newOrderArea.setEditable(true);
scrollPane = new JScrollPane(newOrderArea);
oldPanel.setLayout(new BorderLayout());
oldPanel.add(wrongOrder, BorderLayout.NORTH);
oldPanel.add(errorMessage, BorderLayout.CENTER);
oldPanel.add(request, BorderLayout.SOUTH);
newPanel.add(scrollPane);
buttonPanel.add(Break);
buttonPanel.add(OK2);
setLayout(new BorderLayout());
contentPane.add(oldPanel, BorderLayout.NORTH);
contentPane.add(newPanel, BorderLayout.CENTER);
contentPane.add(buttonPanel,BorderLayout.SOUTH);
correctionWindow.setVisible(true);
OK2.addActionListener(this);
Break.addActionListener(this);
}
}
System.out.println("Update abgeschlossen");
}
catch (SQLException p)
{System.out.println(p.toString());}
}
Ich habe es schon mit flags probiert, klappt aber nicht so wirklich. Ein Kumpel hat gesagt ich soll es mit Threads probieren, doch leider habe ich von Threads überhaupt keine Ahnung. Ich weiss zwar wie ich nen simples Programm schreibe wo zwei Threads bisschen was machen, aber in dieser etwas komplexeren Art habe ich meine Probleme.
Vielleicht kann mir jemand von euch etwas unter die Arme greifen, ich wäre euch sehr dankbar.
-MfG- Danilo
Edit: im Endeffekt sollte der try Block, wenn eine Exception geworfen wird, solange warten bis ich den Frame in der Exception bestätigt habe.
Zuletzt bearbeitet: