# INSERT funktioniert nur im Debug-Modus



## Anan (8. Jul 2006)

Hallo,

ich habe eine Access-DB angebunden. Query funktioniert prima. 
Leider werden Inserts oder Updates nur im Debug-Modus ausgefuehrt.
Beim normalen Ausfuehren passiert nichts.

Irgendeine Idee?


----------



## SamHotte (10. Jul 2006)

Ohne Code können wir nur raten ;-)


----------



## Anan (10. Jul 2006)

```
private static Connection con;
 private static Statement stmt;
 private static String query;
 private static String update;
 
 
 public static void connect()
 {		 
 DriverManager.setLoginTimeout(5);
 try
 {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 }
 catch( ClassNotFoundException e ){ e.printStackTrace();}
 con = null;
 try{
 con = DriverManager.getConnection(dbname, "user", "pass"); 		 	
 stmt = con.createStatement();	}
 catch( SQLException e)
 { e.printStackTrace();}
 }
 
public static void write(String tabelle, String variable, String bedingung, double wert)
 {
 try{
 update = "UPDATE " + tabelle +" SET " + variable + " = "+ wert +" "+bedingung;
 stmt.executeUpdate(update);
 }
 catch (SQLException e){ e.printStackTrace(); }
 }
```

Ich habe es auch schon erfolglos mit 

con.setAutoCommit( true );

probiert.


----------



## AlArenal (10. Jul 2006)

Und der Stacktrace sieht genau wie aus?


----------



## thE_29 (10. Jul 2006)

Anan: Merken, wenn man einen Fehler hat, dann die gesamte Exceptions + Code posten..

Wir können net HELLSEHEN!!

Hättest du das ganze gleich im ersten Post erledigt, hättest wahrscheinlich jetzt schon ne Antwort, aber man muss ja immer alles aus euch "rauszutzeln" weil keiner so fähig ist, überhaupt mal in den Blick in den Sticky Thread zu werfen, bzw. sinnvolle Angaben machen zu können..

Wäre ja das gleiche wenn du in die Werkstatt gehst und sagst:"Mein Auto fährt nicht, was könnte da sein?"


----------



## Anan (10. Jul 2006)

Vielen Dank fuer die freundliche Rueckmeldung.

Keine Stack-Trace, da keine Fehlermeldung!

Entwicklung im Eclipse auf Windows XP.

Mit Run ausgefuehrt aendert sich in der DB nichts,
dafuer wird jede Aenderung im Debug-Modus durchgefuehrt.


----------



## thE_29 (10. Jul 2006)

Kein Fehler?

Kann es sein das es ein refresh Problem ist?

Beim debuggen wird alles langsamer gemacht und daher können die Daten drin sein!

Welche Java Version?


----------



## Leroy42 (10. Jul 2006)

Anan hat gesagt.:
			
		

> dafuer wird jede Aenderung im Debug-Modus durchgefuehrt.



Das heißt also, daß der Code schon funktioniert und tut was du willst.



			
				Anan hat gesagt.:
			
		

> Entwicklung im Eclipse auf Windows XP.Mit Run ausgefuehrt aendert sich in der DB nichts,



Könnte es sein, daß via "Run" überhaupt nicht dein aktuelles Programm ausgeführt wird.
Hatte ich zumindest als Eclipse-Anfänger schon ein paar Mal gehabt.   

Bau doch mal ein paar System.out.println() Befehler ein, um zu sehen,
wie weit der Programmlauf kommt.


----------



## Anan (10. Jul 2006)

Hier nocheinmal der Versuch das Problem praezise zu beschreiben.

Mein Programm bricht weder beim Debuggen, noch beim Run ab. Es gibt keine
Exceptions. Der Unterschied zwischen Debuggen und Runs besteht darin, dass
sich beim Debuggen die Werte in der Access-DB aendern. Fuehre ich das Programm
mit Run aus, dann aendert sich in der DB nichts.

Mit Debuggen kann ich den Fehler also nicht finden. Neustarts, DB neu eintragen, DB
unter neuem Namen abspeichern etc. hat bislang nicht geholfen.


----------



## Anan (10. Jul 2006)

Run fuehrt das aktuelle Programm aus.


----------



## Anan (10. Jul 2006)

Version 1.4.2


----------



## SamHotte (10. Jul 2006)

Führ dein Programm doch mal von einer Eingabeaufforderung aus aus, damit du eventuelle Fehlermeldungen auch siehst; mit Run wird das Dings ja sofort wieder geschlossen.


----------



## Leroy42 (10. Jul 2006)

???:L Sehr ungewöhnlich  ???:L 

Probier doch mal 2 Varianten aus:

1. Breakpoint auf DB-Einfügezeile setzen und im Debugger laufen lassen (KEIN Einzelschritt).
2. System.out.println vor und nach den entsprechenden Zeile einfügen und
im Run-Modus laufen lassen. (Nach der Zeile, um zu sehen, ob die Zeile auch ausgeführt wurde).


----------



## Anan (10. Jul 2006)

Auch das System.out meldet sich wie geplant. 

Ich denke langsam an ne Neuinstallation!?!


----------



## SamHotte (10. Jul 2006)

Hast du in Access die Datenbank offen? Wenn ja, mach die mal zu und wieder auf - je nach Version wird die nicht automatisch auf den neuen Stand gebracht.


----------



## Anan (10. Jul 2006)

Keine fehlende Aktualisierung. Mit Debug funktioniert es ja.


----------



## SamHotte (10. Jul 2006)

Komisch.


----------



## Stradi (10. Jul 2006)

faszinierendes problem...

danke bill  :applaus:


----------



## Anan (10. Jul 2006)

Ich habe mal alles auf einen anderen PC kopiert. Dort funktionieren INSERT und UPDATE wunderbar.
Auf den Rechnern sind identische Eclipse, Java und Access Installationen.

Deutet wohl mal wieder in Richtung Windows.

Ich lasse die Frage noch zwei Tage offen, falls jemanden etwas einfallen sollte, was ich noch probieren kann.

Vielen Dank fuer das Interesse und die Anregungen!


----------



## Anan (10. Jul 2006)

Nein, die Ursache allen Uebels war ich mal wieder selbst.

Im Hauptprogramm war der Aufruf von con.close() ausdokumentiert.

In diesem Fall reagiert Access mal so, mal so. Im Debug-Modus des einen Rechners findet kein
rollback statt, im Run wird es durchgefuehrt.  Auf dem anderen Rechner macht er das rollback nicht,
sofern zwei weitere con.commit() ausgefuehrt werden. Da kann man sich also auf nichts mehr verlassen.


----------

