# Java- Zähle alle Werte aus der Tabelle von aktiver Zelle



## Lia (10. Jul 2018)

Hallo an alle,

ich habe eine Frage, und zwar habe ich eine Tabelle in der ich einen aktive Zelle auswählen möchte und nach dieser soll in meiner Tabelle (Datenbank) gesucht und gezählt werden. Es ist so ein Lehrer soll die Unterrichtsnummer im JTable anwählen und bekommt dann aus der Datenbank mit der Query : 
*"SELECT COUNT(distinct StudentenNr) FROM AngStudenten WHERE UnterrichtsNr=?";*
die Studenten "gezählt" die sich für die "ausgewählte" UnterrichtsNr angemeldet haben. Nur funktioniert das einfach garnicht. Und sorry für den komischen Namen für die Frage xd
Was ich bisher in Java probiert habe ist folgendes:

PreparedStatement pst = con.prepareStatement(query);
                               tblStundents = (JTable) e.getSource();
                               int row = tblStundents.getSelectedRow();
                               int column = tblStundents.getSelectedColumn();
                               final Integer valueInCell = (Integer)tblStundents.getValueAt(row, column);
                               pst.setInt(1,valueInCell));
                               JOptionPane.showMessageDialog(null, "Ausgewählt: " +valueInCell);

​


----------



## AliasAlreadyTaken (11. Jul 2018)

Funktioniert denn dein SQL-Statement außerhalb von Java? Also bringt es dir die gewünschten Ergebnisse, wenn du es direkt auf der DB ausführst?


----------



## Lia (11. Jul 2018)

@AliasAlreadyTaken  ja, hab's es im.mysql schon ausprobiert da funktioniert es einwandfrei


----------



## Robat (11. Jul 2018)

Lia hat gesagt.:


> Nur funktioniert das einfach garnicht.


Und was heißt das? Was stellst du denn mit dem ResultSet an. Führst du das Query auch aus? `pst.executeQuery()`


----------



## Lia (11. Jul 2018)

Hab es im debug modus ausgeführt und da steht noch exlipict Return value. Wenn ich die query testweisse nur im MySQL ausführe ohne Java Code funktioniert die query


----------



## Thallius (11. Jul 2018)

Solange du uns nicht deinen Code zeigst wo du die Datenbankabfrage machst ist das alles nur rumgeraten hier...


----------



## Lia (11. Jul 2018)

Das ist alles was oben ^^ ist nur die Zeile fehlt : 
	
	
	
	





```
String query = "SELECT COUNT(distinct StudentenNr) FROM AngStudenten WHERE UnterrichtsNr=?";
```


----------



## Robat (11. Jul 2018)

Wenn das oben wirklich *alles* ist dann solltest du dein Query auch auch noch ausführen und mit dem ResultSet irgendwas machen .. sonst kann das ja nicht funktionieren

```
PreparedStatement ps = con.prepareStatement(..);
...
ResultSet rs = ps.executeQuery();
while(rs.next()) {
   ...
}
```


----------



## Lia (11. Jul 2018)

oh man du hast recht sorry! aber wie soll ich da diese Count funktion einbauen?


----------



## Robat (11. Jul 2018)

Hier mal ein paar Code-Gedanken. Ist aber ungetestet.

```
tblStundents = (JTable) e.getSource();
int row = tblStundents.getSelectedRow();
int column = tblStundents.getSelectedColumn();
final Integer valueInCell = (Integer)tblStundents.getValueAt(row, column);

String countQuery = "SELECT COUNT(*) AS rowcounter FROM AngStudenten WHERE UnterichtsNr=?";
PreparedStatement ps = con.prepareStatement(countQuery);
pst.setInt(1,valueInCell));

ResultSet rs = ps.executeQuery();
rs.next();
int rowCount = rs.getInt("rowcounter");
rs.close();
```


----------



## Lia (11. Jul 2018)

Vielen dank ! @Robat Was meinst du mit rowcounter? muss da nicht die UnterichtsNr rein?


----------



## Robat (11. Jul 2018)

Nein. Du gibst dem ganzen einen Alias, damit man es über getInt(String) ansprechen kann. Theoretisch würde es auch ohne gehen .. dann müsste man eben getInt(1) nutzen. Ich persönlich finde es aber mit Aliassen leserlicher.
Also entweder

```
String countQuery = "SELECT COUNT(*) AS rowcounter FROM AngStudenten WHERE UnterichtsNr=?";
..
int rowCount = rs.getInt("rowcounter");
```
oder

```
String countQuery = "SELECT COUNT(*) FROM AngStudenten WHERE UnterichtsNr=?";
...
int rowCount = rs.getInt(1);
```


----------



## Lia (12. Jul 2018)

@Robat , vielen vielen Dank. Hat super geklappt !!


----------

