# Exception beim Speichern von eingegebenen Daten in Tabelle



## VanillaSky (22. Jun 2004)

Hallöchen Leute!

Ich habe ein Programm geschrieben (bzw. bin dabei ), in dem ich in ein GUI-Programm in Textfelder einige Eingaben machen will (Anlegen eines Autos mit verschiedenen Attributen). Diese soll es dann schlussendlich in einer Tabelle abspeichern. 
Leider gibt der Kompiler diese ganzen Fehler aus, wenn ich die Daten eingegeben habe und auf Speichern geklickt hab.

Hier meine Klasse:

```
import java.lang.*;
import java.util.*;
import java.sql.*;
import java.util.Date;

public class Fahrzeug
{

private String farbe;
private String modell;
private String kategorie;
private String marke;
private String motorleistung;
private String baujahr;
private int dauer;
private String fahrleistung;
private String verkaufspreis;
private String beschreibung;
private String hubraum;
private static String angebot;
private boolean pkw;
private Date startdatum;
private boolean motorrad;
private int id;
private int benutzerId;
public Benutzer benutzer;
private Garage eineGarage;

/**
* Die ID des Fahrzeugs wird zurückgegeben
* @return ID des Fahrzeugs
*/
public int getId()
{
return id;
}

public void setId(int pId)
{
id = pId;

}

public int getBenutzerId()
{
return benutzerId;
}

public void setBenutzerId(int pBenutzerId)
{
benutzerId = pBenutzerId;
}

public static Vector getAlleFahrzeuge()
{
String tSQL;
tSQL = "SELECT * FROM fahrzeug";
System.out.println(tSQL);

try
{
Statement tS = DBConnection.getInstance().createStatement();
ResultSet tR = tS.executeQuery(tSQL);
Vector tV = new Vector();
while(tR.next())
{
Fahrzeug tF = new Fahrzeug();
tF.setFarbe(tR.getString("farbe"));
tF.setModell(tR.getString("modell"));
tF.setKategorie(tR.getString("kategorie"));
tF.setMarke(tR.getString("marke"));
tF.setMotorleistung(tR.getString("motorleistung"));
tF.setBaujahr(tR.getString("baujahr"));
tF.setDauer(tR.getInt("dauer"));
tF.setFahrleistung(tR.getString("fahrleistung"));
tF.setVerkaufspreis(tR.getString("verkaufspreis"));
tF.setBeschreibung(tR.getString("beschreibung"));
tF.setHubraum(tR.getString("hubraum"));
tF.setId(tR.getInt("id"));
tF.setBenutzerId(tR.getInt("benutzerId"));
tV.add(tF);
}
tS.close();
return tV;
}

catch(Exception pEx)
{
pEx.printStackTrace();
}

return new Vector();
}

public static Vector ladeFahrzeugeFuer(Benutzer benutzer)
{
String tSQL;
tSQL = "SELECT * FROM fahrzeug" + "WHERE benutzerId = " +  benutzer.getId();
System.out.println(tSQL);

try
{
Statement tS = DBConnection.getInstance().createStatement();
ResultSet tR = tS.executeQuery(tSQL);
Vector tV = new Vector();
while(tR.next())
{
Fahrzeug tF = new Fahrzeug();
tF.setFarbe(tR.getString("farbe"));
tF.setModell(tR.getString("modell"));
tF.setKategorie(tR.getString("kategorie"));
tF.setMarke(tR.getString("marke"));
tF.setMotorleistung(tR.getString("motorleistung"));
tF.setBaujahr(tR.getString("baujahr"));
tF.setDauer(tR.getInt("dauer"));
tF.setFahrleistung(tR.getString("fahrleistung"));
tF.setVerkaufspreis(tR.getString("verkaufspreis"));
tF.setBeschreibung(tR.getString("beschreibung"));
tF.setHubraum(tR.getString("hubraum"));
tF.setId(tR.getInt("id"));
tF.setBenutzerId(tR.getInt("benutzerId"));
tV.add(tF);
}
tS.close();
return tV;
}

catch(Exception pEx)
{
pEx.printStackTrace();
}

return new Vector();
}

public static int getNaechsteId()
{
int tId = 0;
try
{
Statement tS = DBConnection.getInstance().createStatement();
String tSQL = "SELECT MAX(id) FROM fahrzeug";
System.out.println(tSQL);
ResultSet tR = tS.executeQuery(tSQL);
tR.next();
tId = tR.getInt(1);
tS.close();
}

catch(SQLException pE)
{
pE.printStackTrace();
}

return tId +1;
}

/**
* Methode um eine Referenz vom Fahrzeug auf seinen Benutzer herzustellen
* @return getBenutzer
*/
public Benutzer getBenutzer()
{
return benutzer;
}

/**
* Methode, um eine Referenz vom Fahrzeug auf seinen Benutzer zu setzen.
* @param benutzer Benutzer
*/
public void setBenutzer(Benutzer benutzer)
{
benutzerId = benutzer.getId();
if (this.benutzer != benutzer)
{
if (this.benutzer != null) this.benutzer.removeFromFahrzeuge(this);
this.benutzer = benutzer;
if (benutzer != null) benutzer.addToFahrzeuge(this);
}
}


/**
* Die ID des Fahrzeugs wird im Vektor gespeichert insofern sie nicht schon vorhanden ist.
* @throws Exception ID des Fahrzeugs
*/
public void save() throws Exception
{
//pruefen();
if(id==0)
{
insert();
}
else
{
update();
}
}

private void insert()
{
int tId = getNaechsteId();
setId(tId);
String tSQL = "INSERT into fahrzeug " + "(id, farbe, modell, kategorie, marke, motorleistung, baujahr, dauer, fahrleistung, verkaufspreis, beschreibung, hubraum, benutzerId) VALUES (" + getId() + ", "+ getFarbe() + ", " + getModell() + ", " + getKategorie() + ", " + getMarke() + ", " + getMotorleistung() + ", " + getBaujahr() + ", " + getDauer() + ", " + getFahrleistung() + ", " + getVerkaufspreis() + ", " + getBeschreibung() + ", " + getHubraum() + ", " + getBenutzerId() + ")";

try
{
Statement tS = DBConnection.getInstance().createStatement();
tS.executeUpdate(tSQL);
System.out.println(tSQL);
tS.close();
}

catch(SQLException pException)
{
pException.printStackTrace();
}
}

private void update()
{
String tSQL = "UPDATE fahrzeug" + "SET farbe = " + " '" + getFarbe() + "'," + " modell = " + "'" + getModell() + "'," + "kategorie = " + "'" + getKategorie() + "'," + "marke = " + "'" + getMarke() + "'," + "motorleistung = " + "'" + getMotorleistung() + "'," + "baujahr = " + "'" + getBaujahr() + "'," + "dauer = " + "'" + getDauer() + "'," + "fahrleistung = " + "'" + getFahrleistung() + "'," + "verkaufspreis = " + "'" + getVerkaufspreis() + "'," + "beschreibung = " + "'" + getBeschreibung() + "'," + "hubraum = " + "'" + getHubraum() + "'," + "id = " + getId() + " WHERE id = " + getId();

try
{
Statement tS = DBConnection.getInstance().createStatement();
int tR = tS.executeUpdate(tSQL);
System.out.println(tSQL);
tS.close();
}

catch(SQLException pException)
{
pException.printStackTrace();
}

}

/**
* Hier wird geprüft, ob alle Angaben zum Fahrzeug gemacht wurden
* @throws Exception Angaben zum Fahrzeug
*/
public void pruefen()throws Exception
{
if(marke== null)
{
throw new Exception("Marke fehlt!");
}
if(marke.equals(""))
{
throw new Exception("Marke fehlt!");
}

if(kategorie== null)
{
throw new Exception("Kategorie fehlt!");
}

if(kategorie.equals(""))
{
throw new Exception("Kategorie fehlt!");
}

if(modell== null)
{
throw new Exception("Modell fehlt!");
}

if(modell.equals(""))
{
throw new Exception("Modell fehlt!");
}

if(fahrleistung.equals(""))
{
throw new Exception("Fahrleistung fehlt!");
}

if (fahrleistung == null)
{
throw new Exception("Fahrleistung fehlt!");
}

if(verkaufspreis.equals(""))
{
throw new Exception("Verkaufspreis fehlt!");
}

if(verkaufspreis == null)
{
throw new Exception("Verkaufspreis fehlt!");
}

if(motorleistung.equals(""))
{
throw new Exception("Motorleistung fehlt!");
}

if(motorleistung == null)
{
throw new Exception("Motorleistung fehlt!");
}

if(hubraum.equals(""))
{
throw new Exception("Hubraum fehlt!");
}

if(hubraum == null)
{
throw new Exception("Hubraum fehlt!");
}

if(baujahr.equals("") )
{
throw new Exception("Baujahr fehlt!");
}

if(baujahr == null)
{
throw new Exception("Baujahr fehlt!");
}

if(farbe== null)
{
throw new Exception("Farbe fehlt!");
}

if(farbe.equals(""))
{
throw new Exception("Farbe fehlt!");
}

/** Ist nicht notwendig!!!
if(beschreibung== null)
{
throw new Exception("Beschreibung fehlt!");
}

if(beschreibung.equals(""))
{
throw new Exception("Beschreibung fehlt!");
}*/
}

// operations
/**
* Es wird geprüft, ob ein PKW oder ein Motorrad gewählt wird.
* @return pkw
*/
public boolean isPkw()
{
return pkw;
}

/**
* Bei wahr wird PKW gesetzt, bei falsch Motorrad.
* @param pPkw pkw
*/
public void setPkw(boolean pPkw)
{
pkw = pPkw;
}

/**
* Marke des Fahrzeugs wird zurückgegeben.
* @return Marke des Fahrzeugs
*/
public String getMarke()
{
return marke;
}

/**
* Marke des Fahrzeugs wird gesetzt
* @param pMarke Marke des Fahrzeugs
*/
public void setMarke(String pMarke)
{
marke = pMarke;
}

/**
* Kategorie des Fahrzeugs wird zurückgegeben
* @return Kategorie des Fahrzeugs
*/
public String getKategorie()
{
return kategorie;
}

/**
* Kategorie des Fahrzeugs wird gesetzt.
* @param pKategorie Kategorie des Fahrzeugs
*/
public void setKategorie(String pKategorie)
{
kategorie = pKategorie;
}

/**
* Modell des Fahrzeugs wird zurückgegeben.
* @return Modell des Fahrzeugs
*/
public String getModell()
{
return modell;
}

/**
* Modell des Fahrzeugs wird gesetzt.
* @param pModell Modell des Fahrzeugs
*/
public void setModell(String pModell)
{
modell = pModell;
}

/**
* Farbe des Fahrzeugs wird zurückgegeben.
* @return Farbe des Fahrzeugs
*/
public String getFarbe()
{
return farbe;
}

/**
* Farbe des Fahrzeugs wird gesetzt.
* @param pFarbe Farbe des Fahrzeugs
*/
public void setFarbe(String pFarbe)
{
farbe = pFarbe;
}

/**
* Motorleistung des Fahrzeugs wird zurückgegeben.
* @return Motorleistung des Fahrzeugs
*/
public String getMotorleistung()
{
return motorleistung;
}

/**
* Motorleistung des Fahrzeugs wird gesetzt.
* @param pMotorleistung Motorleistung des Fahrzeugs
*/
public void setMotorleistung(String pMotorleistung)
{
motorleistung = pMotorleistung;
}

/**
* Baujahr des Fahrzeugs wird zurückgegeben.
* @return Baujahr des Fahrzeugs
*/
public String getBaujahr()
{
return baujahr;
}

/**
* Baujahr des Fahrzeugs wird gesetzt.
* @param pBaujahr Baujahr des Fahrzeugs
*/
public void setBaujahr(String pBaujahr)
{
baujahr = pBaujahr;
}

/**
* Fahrleistung des Fahrzeugs wird zurückgegeben.
* @return Fahrleistung des Fahrzeugs
*/
public String getFahrleistung()
{
return fahrleistung;
}

/**
* Fahrleistung des Fahrzeugs wird gesetzt.
* @param pFahrleistung Fahrleistung
*/
public void setFahrleistung(String pFahrleistung)
{
fahrleistung = pFahrleistung;
}

/**
* Dauer des Fahrzeugs wird zurückgegeben.
* @return Dauer des Fahrzeugs
*/
public int getDauer()
{
return dauer;
}

/**
* Dauer des Fahrzeugs wird gesetzt.
* @param pDauer Dauer des Fahrzeugs
*/
public void setDauer(int pDauer)
{
dauer = pDauer;
}

/**
* Verkaufspreis des Fahrzeugs wird zurückgegeben.
* @return Verkaufspreis des Fahrzeugs
*/
public String getVerkaufspreis()
{
return verkaufspreis;
}

/**
* Verkaufspreis des Fahrzeugs wird gesetzt.
* @param pVerkaufspreis Verkaufspreis des Fahrzeugs
*/
public void setVerkaufspreis(String pVerkaufspreis)
{
verkaufspreis = pVerkaufspreis;
}

/**
* Beschreibung des Fahrzeugs wird zurückgegeben.
* @return Beschreibung des Fahrzeugs
*/
public String getBeschreibung()
{
return beschreibung;
}

/**
* Beschreibung des Fahrzeugs wird gesetzt.
* @param pBeschreibung Beschreibung des Fahrzeugs
*/
public void setBeschreibung(String pBeschreibung)
{
beschreibung = pBeschreibung;
}

/**
* Hubraum des Fahrzeugs wird zurückgegeben.
* @return Hubraum des Fahrzeugs
*/
public String getHubraum()
{
return hubraum;
}

/**
* Hubraum des Fahrzeugs wird gesetzt.
* @param pHubraum Hubraum des Fahrzeugs
*/
public void setHubraum(String pHubraum)
{
hubraum = pHubraum;
}

/**
* Startdatum des Fahrzeugs wird zurückgegeben.
* @return Startdatum des Fahrzeugs
*/
public Date getStartdatum()
{
return startdatum;
}

/**
* Startdatum des Fahrzeugs wird gesetzt.
* @param pStartdatum Startdatum des Fahrzeugs
*/
public void setStartdatum(Date pStartdatum)
{
startdatum = pStartdatum;
}

/**
* Klassenattribut erstelleFahrzeug gibt ein Fahrzeug zurück - erstellt ein Objekt Fahrzeug
* @return erstellt Angebot
*/
public static String erstelleAngebot()
{
return angebot;
}

/**
* Gibt im HauptGUI die Details der einzelnen Fahrzeuge aus und listet sie dort auf.
* @return Details der Fahrzeuge
*/

} // end Fahrzeug
```


```
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Numerischer Wert außerhalb des Gültigkeitsbereichs. (null)
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
        at Fahrzeug.insert(Fahrzeug.java:249)
        at Fahrzeug.save(Fahrzeug.java:232)
        at NeuesAngebotGUI.jButton1ActionPerformed(NeuesAngebotGUI.java:323)
        at NeuesAngebotGUI.access$300(NeuesAngebotGUI.java:12)
        at NeuesAngebotGUI$4.actionPerformed(NeuesAngebotGUI.java:234)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
        at java.awt.Component.processMouseEvent(Component.java:5100)
        at java.awt.Component.processEvent(Component.java:4897)
        at java.awt.Container.processEvent(Container.java:1569)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Container.dispatchEventImpl(Container.java:1627)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
        at java.awt.Container.dispatchEventImpl(Container.java:1613)
        at java.awt.Window.dispatchEventImpl(Window.java:1606)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
java.lang.NoSuchMethodError: Benutzer.addFahrzeug(LFahrzeug;)V
        at NeuesAngebotGUI.jButton1ActionPerformed(NeuesAngebotGUI.java:333)
        at NeuesAngebotGUI.access$300(NeuesAngebotGUI.java:12)
        at NeuesAngebotGUI$4.actionPerformed(NeuesAngebotGUI.java:234)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
        at java.awt.Component.processMouseEvent(Component.java:5100)
        at java.awt.Component.processEvent(Component.java:4897)
        at java.awt.Container.processEvent(Container.java:1569)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Container.dispatchEventImpl(Container.java:1627)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
        at java.awt.Container.dispatchEventImpl(Container.java:1613)
        at java.awt.Window.dispatchEventImpl(Window.java:1606)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
```

Da ich nicht weiß, ob einige von euch die GUI-Klasse dazu benötigen, lasse ich sie vorerst draußen, ist ja schon eh zu lang geworden...  

Vielen Dank im Voraus für eure Hilfe!


----------



## KSG9|sebastian (22. Jun 2004)

> java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Numerischer Wert außerhalb des Gültigkeitsbereichs. (null)



Das heißt wohl, dass du ne Zahl an die Datenbank übergibst, die auserhalb des Wertebereichs von dem Typ ist, in dem du es speichern willst, oder du hast sowas wie int x = null und überbist dann x .


----------



## VanillaSky (22. Jun 2004)

hmm... so ganz genau hab ich den Fehler immer noch nicht verstanden.  :? denn ich hab die Typen der Klasse und die Typdefinition in der Tabelle eigentlich gleich gelassen... und da ich meistens nur Strings habe, dürfe der Wert bei einer eingegeben "1" noch nicht außerhalb der Definition sein oder?  :?:

Könntest du mir vielleicht den Fehler genauer erklären? Ich komm leider nicht darauf, wie man dieses Problem löst


----------

