Abfragen fehlgeschlagen

Barthi666

Mitglied
Heyho,

ich habe ein Problem und hoffe mir kann geholfen werden und zwar muss ich ein Projekt für Wirtschaftsinformatik in der Schule machen und bin jetzt vollends am verzweifeln. Bei dem Projekt handelt es sich um einen Geldautomaten (also als GUI). Und jetzt spuckt mir mein Eclipse folgende Fehlermeldung aus wenn ich den Kontostand abfragen will.
Java:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Ungültiger Cursorstatus
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at paket_Geldautomat.Kunde.KontostandAbfragen(Kunde.java:93)
	at paket_Geldautomat.Änderung_Auszahlung$3.actionPerformed(Änderung_Auszahlung.java:98)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Die KontostandAbfragen Methode sieht folgendermaßen aus:

Java:
public void KontostandAbfragen()
	{
		String mSQL;
		ResultSet antwort;
		DBZugriff objZugriff=new DBZugriff();
		objZugriff.verbinden();

		mSQL="SELECT Kontostand FROM Geldautomat WHERE KTO= '"+ this.kto +"'";
		antwort=objZugriff.einlesen(mSQL);
		try 
		{
			antwort.next();
			this.kontostand=Double.parseDouble(antwort.getString("Kontostand"));
			
		} 
		catch (NumberFormatException e) 
		{
			System.out.println("Zuordnung fehlgeschlagen");
		} 
		catch (SQLException e) 
		{
			
			e.printStackTrace();
		} 
		finally
		{
			objZugriff.trennen();
		}

Was mache ich für einen Fehler? Danke schonmal für die Hilfe.
 
Hallo,

mach mal folgendes, hab ich gerade in einem anderen Thread gesehen, ich weiß allerdings nicht sicher, ob das hilft.

Java:
 if(antwort.next()){
        	   this.kontostand=Double.parseDouble(antwort.getString("Kontostand"));
          }
 
Okay das hilft auf jeden Fall mal. Vielen Dank! 🙂

Aber jetzt fällt mir ein weiteres Problem auf und zwar deklariere ich die Kontonummer (Die Variable befindet sich in der Klasse "Kunde") in einer anderen Klasse und irgendwie wird die dann immer wieder auf "null" gesetzt. Kann mir da vielleicht auch nochmal jemand helfen?
 
Du musst die Kontonummer als Parameter übergeben, zum Beispiel beim Konstruktor o.ä. dann sollte diese auch nicht null werden.
 
Also, wenn ich dich richtig verstanden habe, hast du 2 Verschiedene Klassen und du willst einen Wert von der einen Klasse in eine andere Klasse übergeben.

Somit hier mal ein kleines Beispiel dazu, wie man es anstellen könnte.

Ich hab mal die Klassen Test und Test2 genommen.
Test
Java:
public class Test {

	public static void main(String[] args) {

		int kundennummer = 1337;
		
		Test2 t = new Test2();
		t.los(kundennummer);

	}

}

Test2
Java:
public class Test2{
    
	private int kundenNummer;
	
	/*public Test2(int kundenNummer){
		this.kundenNummer = kundenNummer; // das geht natürlich auch mit dem Konstruktor der Klasse :-)
		System.out.println(this.kundenNummer);
	}*/
	
	public void los(int kundenNummer){
		this.kundenNummer = kundenNummer;
		System.out.println(this.kundenNummer);
		
       }

}
 
Dann habe ich mich wohl etwas unklar ausgedrückt und zwar habe ich, um einen funktionierenden Geldautomaten hinzubekommen mehrere GUI-Klassen. Die Kontonummer wird in der Klasse PWAbheben praktisch deklariert:

Java:
objKunde.setKTO(tfKTO.getText());

Das funktioniert soweit auch wunderbar.
Aber wenn ich jetzt in meiner Klasse Abheben (wo der eigentliche Abhebevorgang statt findet) die Kontonummer "benutzen" will ist sie immer wieder auf "null" gesetzt obwohl das PWAbheben Fenster immernoch offen ist. In folge dessen habe ich es mit folgendem Befehl versucht:

Java:
PWAbheben FensterPW = new PWAbheben();
	objKunde.setKTO(FensterPW.tfKTO.getText());

Das funktioniert leider auch nicht. Allerdings wird wenn ich diesen Befehl anwende nicht "null" ausgespuckt sondern gar nix, wenn ich die KTO in der Console ausgeben lassen will.
Vielen Dank für die bisherige Hilfe und die zukünftige Hilfe.
 

Zurück
Oben