Oracle JDBC und Joins?

Xpisto

Aktives Mitglied
Hallo Leute, ich habe eine Frage und zwar folgender Sachverhalt:

Mir stellt sich die Frage wie genau die Selectanweisung in JDBC geschrieben werden "darf".
Also als Beispiel: Um die Prüfungsleistung(Note) zu ermitteln muss der Studentn mit den Prüfungen joinen. Da ich mit der Syntax von JDBC noch nicht so vertraut ist, stellt sich mir die Frage was darf ich reinschreiben in die executeQuery, kann die Selectabfrage genauso aussehen wie in der normalen DB Programmierung oder sind da einige Einschränkungen die ich beachten muss.

Hier erstmal das Datenmodell zur Datenbank:

Student (MatrikelNr, Name, Adresse, Telefon, Immatr, Exmatr)
Dozent (DozKn, Name, FB, Raum Telefon)
Vorlesung (Vnr, Name)
Voraussetzungen (Vnr , VorVnr )
Vorlesungsangebot (Vnr , Semester, DozKn , Raum, Zeit)
Pruefung (MatrikelNr , Vnr , Semester , Datum , Note)
(Anmerkung: Primärschlüssel sind unterstrichen, Fremdschlüssel durch kursive Schrift angedeutet.)

Beispiel der Select: Geben Sie alle Studenten mit MatrikelNr, Name und Note aus:

Würde ich jetzt so in Sql schreiben

select st.MatrikelNr, Name, Note
from Student st join Pruefung pr
on st.MatrikelNr = pr.MatrikelNr;

Könnte ich diesen join 1:1 in JDBC übernehmen? Es geht nur um die Statments, in der Prüfung wird kein komplettes Programm benötigt.

Query*ausführen:

ResultSet result = stmt.executeQuery("SELECT st.MatrikelNr, Name, Note FROM Student st join Pruefung pr on st.MatrikelNr = pr.MatrikelNr ;")

Funktioniert das so? Kann ich davon ausgehen dass alles was ich an Selectanweisungen im SqlDeveloper schreibe und dort läuft auch 1:1 in den Querys funktionieren würde?

Mich würde auch Interessieren ob man ganz normal in den ResaultSets mit Spaltenfunktionen arbeiten kann, also generell geht es mir halt darum wie die Syntax der Selectanweisungen im ResaultSet aussehen müssten.

Ich würde mich über Antworten freuen :)
 

Xpisto

Aktives Mitglied
Das ist super, ich habe hier ein Beispiel:

Schreiben Sie ein Java-Programm, das f¨ur eine Studentin / einen Studenten ¨uber den stu-
dentischen Namen die bislang abgelegten Pr¨ufungsleistungen ermittelt. Mit dem Namen
jeder Vorlesung (d.h. Pr¨ufung) sollte neben der erreichten Zensur auch die Anzahl der Ver-
suche angegeben werden. Als zus¨atzliche Information sollte vermerkt werden ’Bestanden’,
’nicht bestanden’ bzw. ’endg¨ultig nicht bestanden’.
Sollten mehrere Studierende mit gleichem Namen vorhanden sein, so soll diese Information
f¨ur jeden einzeln ausgegeben werden.

Das ist unsere Datenstruktur:

Student (MatrikelNr, Name, Adresse, Telefon, Immatr, Exmatr)
Dozent (DozKn, Name, FB, Raum Telefon)
Vorlesung (Vnr, Name)
Voraussetzungen (Vnr , VorVnr )
Vorlesungsangebot (Vnr , Semester, DozKn , Raum, Zeit)
Pruefung (MatrikelNr , Vnr , Semester , Datum , Note)
(Anmerkung: Prim¨arschl¨ussel sind unterstrichen, Fremdschl¨ussel durch kursive Schrift an-
gedeutet.)


So nun habe ich zwei selectanweisungen in sql geschrieben und beide Funktionieren. Ich interpretiere aus der Aufgabe das zwei suchen durchgeführt werden sollen, einmal "Ermittle alle Prüfungsleistungen über den Studentennamen" und einmal "Ermittle alle Prüfungsleistungen über den Vorlesungsnamen + die zusätzlichen Infos die in der Aufgabe stehen"

Daraus habe ich folgende Selects entwickelt die auch richtig Funktionieren:


Java:
      /*Gebe alle Studenten aus die eine Prüfung abgelegt haben*/

          select st.MatrikelNr, st.Name, vl.Name, pr.Note
	from Student st join (Pruefung pr join Vorlesung vl on pr.Vnr = vl.Vnr)
		on st.MatrikelNr = pr.MatrikelNr;
    
    /*Geben Sie zu allen Vorlesungen die Note sowie die anzahl der Versuche an.*/
    
    select st.MatrikelNr, st.Name, vl.Name, pr.Note, count(pr.MatrikelNr) "Anzahl Versuche", case 
      when pr.Note <= 4.0  then 'Bestanden'
      when count(pr.MatrikelNr) >= 3 then 'endgültig nicht Bestanden '
      else 'Nicht Bestanden'
      end as Leistung
     	from Student st join (Pruefung pr join Vorlesung vl on pr.Vnr = vl.Vnr)
  		on st.MatrikelNr = pr.MatrikelNr 
      group by st.MatrikelNr, st.Name, vl.Name, pr.Note;

Ich kann mir gar nicht vorstellen das diese großen Selectanweisungen in die ResaultSets geschrieben werden... Oder irre ich mich? Wie würde das ganze denn im executeQuery aussehen? etwa so->

Query*ausführen*

Java:
ResultSet result = stmt.executeQuery(" select st.MatrikelNr, st.Name, vl.Name, pr.Note, count(pr.MatrikelNr) "Anzahl Versuche", case 
      when pr.Note <= 4.0  then 'Bestanden'
      when count(pr.MatrikelNr) >= 3 then 'endgültig nicht Bestanden '
      else 'Nicht Bestanden'
      end as Leistung
     	from Student st join (Pruefung pr join Vorlesung vl on pr.Vnr = vl.Vnr)
  		on st.MatrikelNr = pr.MatrikelNr 
      group by st.MatrikelNr, st.Name, vl.Name, pr.Note;
 " )

Freue mich auf Antworten !
 
M

maki

Gast
Ich kann mir gar nicht vorstellen das diese großen Selectanweisungen in die ResaultSets geschrieben werden... Oder irre ich mich?
Du irrst dich, abgesehen davon schreibt man keine SQL Anweisungen in ResultSets, aber was du eigentlich meinst geht und ist volkommen normal.
 

ARadauer

Top Contributor
"Anzahl Versuche" würd ich 'Anzahl Versuche' schreiben... aber eigentlich sollte es funktionieren...
hab noch nie case, when, else in sql verwendet.... ist das überhaupt SQL?
 

Xpisto

Aktives Mitglied
Ja, also case when, ist in oracle kein problem so stehts in der vorlesung und so funktioniert auch die skriptausgabe. Also wäre damit eigentlich meine frage beantwortet, wenn ichs genau so da reinschrieben kann is es wunderbar :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand JDBC Client Spring: Pool läuft voll Datenbankprogrammierung 6
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9
G JDBC Exception Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
F Fehlerhandling bei JDBC Datenbankprogrammierung 9
T JDBC und Arrays Datenbankprogrammierung 7

Ähnliche Java Themen


Oben