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

Lia

Bekanntes Mitglied
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);


 
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
 
Das ist alles was oben ^^ ist nur die Zeile fehlt :
Java:
String query = "SELECT COUNT(distinct StudentenNr) FROM AngStudenten WHERE UnterrichtsNr=?";
😳
 
Zuletzt bearbeitet von einem Moderator:
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
Java:
PreparedStatement ps = con.prepareStatement(..);
...
ResultSet rs = ps.executeQuery();
while(rs.next()) {
   ...
}
 
Hier mal ein paar Code-Gedanken. Ist aber ungetestet.
Java:
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();
 
Zuletzt bearbeitet:
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
Java:
String countQuery = "SELECT COUNT(*) AS rowcounter FROM AngStudenten WHERE UnterichtsNr=?";
..
int rowCount = rs.getInt("rowcounter");
oder
Java:
String countQuery = "SELECT COUNT(*) FROM AngStudenten WHERE UnterichtsNr=?";
...
int rowCount = rs.getInt(1);
 

Zurück
Oben