SQL: Kann die AUfgabe nicht lösen!

babuschka

Top Contributor
Hallo Community,
ich bin absoluter anfänger deshalb habe ich sehr viele Schwierigkeiten, konnte die Aufgabe nicht richtig lösen.

folgende Aufgabe ist gestellt:

Sie haben in einer Datenbank-Tabelle Students Datensätze, die für jeden Studenten Name,Vorname,MatrikelNr und Note beinhalten. Schreiben Sie ein syntaktisch korrektes Programm, das

-Eine Verbindung zur Datenbank herstellt (erledigt)

-Mittels SELECT NAME,VORNAME,MATNR, NOTE FROM STUDENTS alle Datensätze ausliest und in eine Datei students.out ausgibt (teilweise erledigt)

-Den Durchschnitt aller Noten berechnet und auf dem Bildschirm ausgibt

Meine Lösung:

Java:
package sql2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Main {

    public static void main(String[] args) {
        datenAusgeben();
        
    }
    
    public static void datenAusgeben() {

    try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/uni_db", "root", "12345");
Statement stmt = con.createStatement();
ResultSet rslt = stmt.executeQuery("SELECT Name,Vorname,MatNr,Note FROM Students");

stmt.close();
con.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}


zu 2.) wie kann ich die Daten Name,Vorname,MatNr, Noten etc. von allen Studenten auslesen lassen?

zu 3.) Wie kann ich die Notenberechnen lassen? Wo müssen die Anweisungen genau hin? Wie sieht es aus also wie tut man programmieren, damit alle Noten addiert werden?
 
Zuletzt bearbeitet von einem Moderator:

babuschka

Top Contributor

Java:
package sql2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Main {

    public static void main(String[] args) {
        datenAusgeben();
        
    }
    
    public static void datenAusgeben() {

    try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/uni_db", "root", "12345");
Statement stmt = con.createStatement();
ResultSet rslt = stmt.executeQuery("SELECT Name,Vorname,MatNr,Note FROM Students");

while(rslt.next()){
    System.out.println("Name"+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));
}
stmt.close();
con.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

stimmt es so?
 
S

SlaterB

Gast
was soll daran stimmen, was ist deine Frage?
ob der Code funktioniert kannst du doch hoffentlich selber ausprobieren, vorhandene DB-Verbindung vorausgesetzt,
ob er der Aufgabenstellung entspricht ist Interpretation, bisschen selber nachdenken,
ist da nicht von einer Datei die Rede?

und zu den Noten, 'also wie tut man programmieren', hmm, keinerlei Ideen? du hast da eine Schleife in der je eine Note drankommt,
ist doch nun kein Thema, etwa diese Noten zusammenzuaddieren ( summe += aktuellerWert) , dazu die Anzahl zu zählen, am Ende teilen,
oder auch die Noten erstmal in eine Liste einzufügen, um später damit zu arbeiten,

du sollst nicht zaubern sondern einfache Dinge umsetzen, das ist oft nicht mehr als Lego für einen 5jährigen, nur eben in Java-Sprache formuliert
 

babuschka

Top Contributor
was soll daran stimmen, was ist deine Frage?
ob der Code funktioniert kannst du doch hoffentlich selber ausprobieren, vorhandene DB-Verbindung vorausgesetzt,
ob er der Aufgabenstellung entspricht ist Interpretation, bisschen selber nachdenken,
ist da nicht von einer Datei die Rede?

und zu den Noten, 'also wie tut man programmieren', hmm, keinerlei Ideen? du hast da eine Schleife in der je eine Note drankommt,
ist doch nun kein Thema, etwa diese Noten zusammenzuaddieren ( summe += aktuellerWert) , dazu die Anzahl zu zählen, am Ende teilen,
oder auch die Noten erstmal in eine Liste einzufügen, um später damit zu arbeiten,

du sollst nicht zaubern sondern einfache Dinge umsetzen, das ist oft nicht mehr als Lego für einen 5jährigen, nur eben in Java-Sprache formuliert


Ob mit dieser Code: Die werte ausgegeben werden war die frage! Ja mit For/while schleife kann man das berechnen lassen aber SQL habe ich zum ERSTEN mal gemacht ich weis nicht wie das in diesem FALL geht. Ist ja kein normales JAVA das alles in SQL umzusetzen fällt mir natürlich schwer da ich ANFÄNGER BIN! Es gibt halt Menschen die das schneller begreifen und manche brauchen halt LÄNGER wie ich z.b.!

Java:
while(rslt.next()){
    System.out.println("Name"+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));
}
 
Zuletzt bearbeitet von einem Moderator:

babuschka

Top Contributor
was soll daran stimmen, was ist deine Frage?
ob der Code funktioniert kannst du doch hoffentlich selber ausprobieren, vorhandene DB-Verbindung vorausgesetzt,
ob er der Aufgabenstellung entspricht ist Interpretation, bisschen selber nachdenken,
ist da nicht von einer Datei die Rede?

und zu den Noten, 'also wie tut man programmieren', hmm, keinerlei Ideen? du hast da eine Schleife in der je eine Note drankommt,
ist doch nun kein Thema, etwa diese Noten zusammenzuaddieren ( summe += aktuellerWert) , dazu die Anzahl zu zählen, am Ende teilen,
oder auch die Noten erstmal in eine Liste einzufügen, um später damit zu arbeiten,

du sollst nicht zaubern sondern einfache Dinge umsetzen, das ist oft nicht mehr als Lego für einen 5jährigen, nur eben in Java-Sprache formuliert

Java:
    try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/uni_db", "root", "12345");
Statement stmt = con.createStatement();
ResultSet rslt = stmt.executeQuery("SELECT Name,Vorname,MatNr,Note FROM Students");


while(rslt.next())
    System.out.println("Name"+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));

double summe=0;
int i=0;

while(rslt.next()){
    summe+=rslt.getDouble(i);
    System.out.println(summe);
    i++;
}

stmt.close();
con.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}


Werden damit nun die oben genannte Punkte erfüllt?
 

eRaaaa

Top Contributor
[XML]
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/uni_db", "root", "12345");
Statement stmt = con.createStatement();
ResultSet rslt = stmt.executeQuery("SELECT Name,Vorname,MatNr,Note FROM Students");


while(rslt.next())
System.out.println("Name"+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));

double summe=0;
int i=0;

while(rslt.next()){
summe+=rslt.getDouble(i);
System.out.println(summe);
i++;
}

stmt.close();
con.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}[/XML]


Werden damit nun die oben genannte Punkte erfüllt?

Nein!!! DU sollst doch die Werte in eine Datei schreiben!
Und beim Zweiten: Nicht [c]getDouble(i);[/c] sondern
Code:
getDouble(4);
<-- Die Note ist ja schließlich immer in Spalte 4 !!
Aber ich würde beides in einer Schleife erledigen *g* (so wird in die zweite ja gar nicht erst reingegangen)
Des weiteren sollst du nicht die einzelnen Noten oder die Summe ausgeben, sondern am Ende den Durchschnitt....
 

babuschka

Top Contributor
Nein!!! DU sollst doch die Werte in eine Datei schreiben!
Und beim Zweiten: Nicht [c]getDouble(i);[/c] sondern
Code:
getDouble(4);
<-- Die Note ist ja schließlich immer in Spalte 4 !!
Aber ich würde beides in einer Schleife erledigen *g* (so wird in die zweite ja gar nicht erst reingegangen)
Des weiteren sollst du nicht die einzelnen Noten oder die Summe ausgeben, sondern am Ende den Durchschnitt....

while(rslt.next()){
System.out.println("Name: "+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));
System.out.println("Notendurchschnitt: ");
summe+=rslt.getDouble(4)/ANZAHL DER NOTEN;
System.out.println(summe);

}

So??? woher kriege ich die anzahl der noten? Was für Methoden kann ich dazu nehmen?
 

babuschka

Top Contributor
Java:
while(rslt.next()){
System.out.println("Name: "+rslt.getString(1)+" Vorname: "+rslt.getString(2)+" MatNr: "+rslt.getInt(3)+" Note: "+rslt.getDouble(4));
System.out.println("Notendurchschnitt: ");
summe+=rslt.getDouble(4)/rslt.getDouble(4);
System.out.println(summe);

}

vielleicht so?
 
S

SlaterB

Gast
na das i++ war dazu schon gar nicht schlecht, welchen Wert wird i haben, wenn 5 Ergebnisse in der Schleife durchgearbeitet wurden?

generell verabschiede ich mich aber, du fragst ja wirklich alles was dir gerade in den Kopf kommt,
so einen Service gibts nicht ;)


edit:
> rslt.getDouble(4)/rslt.getDouble(4)
dieser Code macht quasi nie Sinn, eine Zahl durch sich selber ist 1 wenn nicht schlimmeres (Division durch 0)
 

eRaaaa

Top Contributor
Du solltest die Tipps die man dir gibt aufmerksam lesen und dann vorher überlegen!

summe+=rslt.getDouble(4)/rslt.getDouble(4);

Was ist denn rslt.getDouble(4)/rslt.getDouble(4) ??
Macht das Sinn?

/edit: zu spät, aber ich bin nu auch raus :D
 

babuschka

Top Contributor
na das i++ war dazu schon gar nicht schlecht, welchen Wert wird i haben, wenn 5 Ergebnisse in der Schleife durchgearbeitet wurden?

generell verabschiede ich mich aber, du fragst ja wirklich alles was dir gerade in den Kopf kommt,
so einen Service gibts nicht ;)


edit:
> rslt.getDouble(4)/rslt.getDouble(4)
dieser Code macht quasi nie Sinn, eine Zahl durch sich selber ist 1 wenn nicht schlimmeres (Division durch 0)

geht das hier nicht freundlicher mit Ihnen? Natürlich frage ich alles nach was ich nicht kann! Muss ja am ende alles Lernen oder? Kann ja nicht alles auf mich zukommen lassen! Jeder fragt hier! Ist doch ganz normal?
 

babuschka

Top Contributor
Mein problem ist:
Wie kann man die einzelnen noten zusammen zählen? Und wie kann ich dieses durch anzahl der noten teilen wenn ich nicht weis wieviele noten in datenbank vorhanden ist!!!!!!!!!!!!!!!!!!!!!!?????????????????
ACH NOCH WAS ICH WEIS AUCH NICHT WELCHE METHODEN DAZIU GEEIGNET SIND OK?

ICH ANFÄNGER NIX KAPIEREN???
 

eRaaaa

Top Contributor
Du warst doch anfangs schon dicht dran?!?! (nur dass du halt nicht getDouble(i) sondern getDouble(4) schreiben solltest....aber lesen musst du schon selber!
--Ach was solls!--
Java:
	double noten=0;
	int anzahlNoten=0;
	while (rslt.next()) {
	    noten += rslt.getDouble(4);
	    anzahlNoten++;
	}
	System.out.println("Notendurchschnitt: "+noten/anzahlNoten);
 

babuschka

Top Contributor
Du warst doch anfangs schon dicht dran?!?! (nur dass du halt nicht getDouble(i) sondern getDouble(4) schreiben solltest....aber lesen musst du schon selber!
--Ach was solls!--
Java:
	double noten=0;
	int anzahlNoten=0;
	while (rslt.next()) {
	    noten += rslt.getDouble(4);
	    anzahlNoten++;
	}
	System.out.println("Notendurchschnitt: "+noten/anzahlNoten);

aha und das ist jetzt die Lösung? War ja nah dran!
 

babuschka

Top Contributor
was ist eigentlich mit alle Datensätze auslesen lassen und in eine Datei students.out ausgeben lassen?

wurde das auch erfüllt? Wenn ja in welche Zeile?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kirby.exe Denkanstoß bei UNION Aufgabe Datenbankprogrammierung 1
Kirby.exe Aufgabe mit Aggregation und Unteranfragen Datenbankprogrammierung 8
D Probleme bei Einsteiger Aufgabe SQL Datenbankprogrammierung 2
Q Klausur aufgabe! Bitte um mithilfe Datenbankprogrammierung 2
krgewb Hibernate: Fremdschlüssel wird nicht erzeugt Datenbankprogrammierung 2
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
T Datenzeilen werden nicht gelöscht Datenbankprogrammierung 6
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
Watsoon Treiber wird in Intellij nicht geladen Datenbankprogrammierung 2
Kirby.exe PreparedStatement wird nicht ausgeführt Datenbankprogrammierung 5
rafi072001 MicroServices EurekaClient findet anderern EurekaClient nicht Datenbankprogrammierung 1
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
pkm PostgreSQL Auf eine Spalte kann aus einem Teil der SQL-Aussage nicht zugegriffen werden Datenbankprogrammierung 3
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
C MySQL SQL Statement wir nicht ausgeführt Datenbankprogrammierung 11
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
pkm Tomcat Classloader findet bei JPA-Persistierung die Persistence Unit nicht. Datenbankprogrammierung 11
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
J Firebase KeepSynced funktioniert nicht Datenbankprogrammierung 0
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B MySQL Data Tools Plattform - "Database Connections" findet den Treiber nicht Datenbankprogrammierung 1
OnDemand One to Many bekomm es nicht hin Datenbankprogrammierung 7
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
F H2 ObjectOptimisticLockingFailureException wird nicht geworfen Datenbankprogrammierung 0
R findet Derby.DB nicht !? Datenbankprogrammierung 5
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
X SQLite SQLite Programm beendet/führt nicht weiter aus Datenbankprogrammierung 12
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
Ananaskirsche Datenbanktreiber kann nicht geladen werden Datenbankprogrammierung 2
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
M Java Datenbankanbindung funktioniert nicht Datenbankprogrammierung 4
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
E Warum kann mein SQL-File nicht in DB2 ausgeführt werden? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
OnDemand Update table SET will nicht Datenbankprogrammierung 9
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
S MySQL Speicher wird nicht freigegeben bei Datenbankabfragen Datenbankprogrammierung 6
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
I Datenbank Verbindung geht nicht Datenbankprogrammierung 2
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1
I Kann nicht mit iiS DB Verbinden Datenbankprogrammierung 1
S Verbindungsaufbau zu MySql Datenbank nicht möglich Datenbankprogrammierung 3
D [xBaseJ] Datei kann nicht geöffnet werden Datenbankprogrammierung 2
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
K Datenbank wird bei Programmstart als .jar nicht mehr befüllt Datenbankprogrammierung 12
R Datenbankverbindung kann nicht hergestellt werden Datenbankprogrammierung 8
M Oracle Bekomme fertiges Tool nicht ans Laufen Datenbankprogrammierung 3
V Test H2-DB löscht nicht die IDs Datenbankprogrammierung 0
P PostgreSQL Java-Anwendung zählt rollbacks nicht Datenbankprogrammierung 0
M Finde einen eifachen Befehl nicht Datenbankprogrammierung 4
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
P MySQL jpmdbc: Kann lesen aber nicht schreiben? Datenbankprogrammierung 3
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
M Derby/JavaDB Neu geschriebener Eintrag per UPDATE lässt sich nicht unmittelbar abrufen Datenbankprogrammierung 2
J Datenbankeintag eines Warenkorbes funktioniert nicht Datenbankprogrammierung 4
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
M MySQL INSERT will einfach nicht funktionieren Datenbankprogrammierung 9
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
T SQL-Statement case when then klappt nicht Datenbankprogrammierung 4
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
D MySQL Treiber konnte nicht geladen werden Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
C Db4o speichert verschachtelte Objekte nicht vollständig Datenbankprogrammierung 8
P SQL-Statement "Top 1" oder "limit" funktioniert nicht Datenbankprogrammierung 12
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3

Ähnliche Java Themen


Oben