# getInt(....)



## Thomas C. (16. Nov 2017)

Hallo zusammen,
ich habe ein Problem mit der Methode getInt(....). Diese Methode gibt es in 2 Varianten:
1. int getInt (String columnLabel) throws SQLException
2. int getInt(int columnIndex) throws SQLException
Ich habe die Beschreibung auf https://docs.oracle.com gelesen un dachte ich hätte es verstanden.
Nun habe ich aber folgenden Code:

10.       try {
11.            String query = "SELECT * FROM Employee WHERE ID=110";
12.            Statement stmt = conn.createStatement();
13.            ResultSet rs = stmt.executeQuery(query);
14.            System.out.println("Employee ID: " + rs.getInt("ID"));
15.        } catch (Exception se) {
16.            System.out.println("Error");
17.        }

Was läuft da schief? Warum wird die Exception ausgelöst? Hängt das mit dem Wert der ID in der query zusammen?

Vielen Dank für Eure Hilfe,
Thomas


----------



## truesoul (16. Nov 2017)

Hallo 

Kannst du bitte mal den Stacktrace posten. 

Und änder mal "SELECT * FROM Employee WHERE ID=110" in "SELECT ID FROM Employee WHERE ID=110"

Grüße


----------



## Dompteur (16. Nov 2017)

Ersetze die Zeile 16 am besten mit : 
	
	
	
	





```
se.printStackTrace();
```
So wie du es jetzt hast, verlierst du die Fehlerbeschreibung.


----------



## Thomas C. (16. Nov 2017)

Hallo truesoul,

leider kann ich keinen Stacktrace schicken, ich habe nur diesen Code!
Ich glaube daß der Hund irgendwie in der getInt(....) Methode begraben liegt.

Vielen Dank für Deine schnelle Antwort,
Thomas


----------



## truesoul (16. Nov 2017)

Thomas C. hat gesagt.:


> Hallo truesoul,
> 
> leider kann ich keinen Stacktrace schicken, ich habe nur diesen Code!
> Ich glaube daß der Hund irgendwie in der getInt(....) Methode begraben liegt.
> ...



Dann versuche "SELECT ID FROM Employee WHERE ID=110"

Ohne Stacktrace wird es schwer dir zu helfen. Was sagt die Doku?


----------



## Thomas C. (16. Nov 2017)

*Doku:

int getInt(String columnLabel) throws SQLException*
Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.
Parameters:
columnLabel - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
Returns:
the column value; if the value is SQL NULL, the value returned is 0
Throws:
SQLException - if the columnLabel is not valid; if a database access error occurs or this method is called on a closed result set

*int getInt(int columnIndex) throws SQLException*
Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.
Parameters:
columnIndex - the first column is 1, the second is 2, ...
Returns:
the column value; if the value is SQL NULL, the value returned is 0
Throws:
SQLException - if the columnIndex is not valid; if a database access error occurs or this method is called on a closed result set

Vielen Dank für Eure Hilfe,
Thomas


----------



## fhoffmann (16. Nov 2017)

Du musst

```
rs.next();
```
aufrufen!


----------



## truesoul (16. Nov 2017)

fhoffmann hat gesagt.:


> Du musst
> 
> ```
> rs.next();
> ...



Du sagst es. Übersehen


----------



## Thomas C. (16. Nov 2017)

Hallo,

daran liegts leider auch nicht!

Vielen Dank für Eure Hilfe,
Thomas


----------



## truesoul (16. Nov 2017)

Und was ist mit: SELECT ID ....

Davon abgesehen würde ich auf * im Statement verzichten!


----------



## Thomas C. (16. Nov 2017)

Also der Code war Teil eines Tests auf dem Papier, da gabs leider keine Änderungen die ich machen konnte.
Der Fehler muss in der Programmlogik bzw. der Syntax von getInt(....) liege.
Der Code ist so wie er ist richtig. Es sei denn die Testerstellen hätten einen Fehler gemacht!.
Den einzigen Hinweis den es gibt ist der dass es etwas mit getInt() und der query zu tun hat!

Vielen Dank für Eure Hilfe,
Thomas


----------



## truesoul (16. Nov 2017)

Thomas C. hat gesagt.:


> Es sei denn die Testerstellen hätten einen Fehler gemacht!.
> Thomas



Der Code ist falsch von den Testersteller weil ohne 
	
	
	
	





```
rs.next();
```
 wirst du nichts bekommen. 

Grüße


----------



## fhoffmann (16. Nov 2017)

Zeig doch mal deinen aktuellen Code.
Überprüfst du den Rückgabewert von next() ?


----------



## Thomas C. (16. Nov 2017)

Hi fhoffmann, da wird nichts überprüft, es gibt nur den Code auf dem Papier!

Vielen Dank für Eure Hilfe,
Thomas


----------



## fhoffmann (16. Nov 2017)

Mit Überprüfen meine ich:

```
if (rs.next()) {
    int id = rs.getInt("ID");
} else {
    // keinen Eintrag zur ID gefunden
}
```


----------



## Thomas C. (16. Nov 2017)

Achso, hmmmmmmmmmmmmm, das könnte sein!

Vielen Dank für Eure Hilfe,
Thomas


----------

