FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 Aufgabenblatt 5 Aufgabe 2

P3 Aufgabenblatt 5 Aufgabe 2 2004-01-08 11:48
Anonymer User
Es gibt ja eine extra Methode closeStatement(). Wann muss ich denn das Statement öffnen?
darf ich das schon bei der DB-Connection, oder muss ich das in der methode askDB() machen?
Ich würde eher zu askDB tendieren, doch der Kommentar von Dorina lautet wie folgt:"Sends a query to the data base and returns a result set"

Wann soll ich nun das Statement öffnen?

JULIAN

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-08 15:07
Wulf
Hi,
ich denke dass die Aufgabenstellung fehlerhaft ist.
laut API kann man pro Statement nur ein ResultSet haben, das heisst man kann immer nur eine Anfrage gleichzeitig an die Datenbank stellen, was mir doch sehr unflexibel erscheint.

Ich wuerde also in askDB ein Statement oeffnen, die anfrage machen und das ResultSet zurueckgeben.

in closeStatement wuerde ich dann Statement und ResultSet wieder schliessen, aber hierfuer muesste man der Methode noch einen Parameter übergeben, womit die Loesung dann nicht mehr der (unsinnigen) Aufgabenstellung entspricht.

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-09 13:01
Deepthought
ich denke dass die Aufgabenstellung fehlerhaft ist.
laut API kann man pro Statement nur ein ResultSet haben, das heisst man kann immer nur eine Anfrage gleichzeitig an die Datenbank stellen, was mir doch sehr unflexibel erscheint.

Zugegeben, die Aufgabe ist nicht sehr praxisnah… aber sie desshalb fehlerhaft zu nennen finde ich uebertrieben. Man wuerde wohl nicht auf die Idee kommen, den Code so in einem richtigen Programm zu nutzen, aber um mal kurz mit JDBC rumzuspielen und Funktionsweisen zu erklaeren ist es doch ausreichend. Nur MHO…

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 15:20
Anonymer User
Gibt es eine praktischere oder elegantere Ausgabe als
rs.getString(int columnIndex)???

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 15:27
Anonymer User
Wichtig!!!
Firstname in Employee ist Firstnme!!!

Also nicht verzagen, wenn der nicht will:)

JULIAN

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 18:57
Anonymer User
Wenn ich "Class.forName("com.ibm.db2.icc.DB2Driver");" ausführe bekomm ich immer ne ClassNotFound-Exception und kann somit auch keine Verbindung aufbauen. Was mach ich falsch?

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 19:02
Tweety
Wenn ich "Class.forName("com.ibm.db2.icc.DB2Driver");" ausführe bekomm ich immer ne ClassNotFound-Exception und kann somit auch keine Verbindung aufbauen. Was mach ich falsch?

hmm, das hört sich für mich so an als ob der Treiber nicht im classpath liegt. Einfach nur das jar runterladen bringt natürlich nicht viel.

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 19:07
Anonymer User
Und welche Datei muss wohin?

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-11 19:45
Farcon
Die beiden .jar Dateien können mit ins Verzeichnis, wo auch deine AccessDB.java liegt, dann musst du sie noch importieren, wenn du eclipse als Entwicklungsumgebung benutzt.

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-12 18:29
Anonymer User
Class.forName("com.ibm.db2.jcc.DB2Driver"); ClassNotFoundException: com.ibm.db2.jcc.DB2Driver

Was mache ich falsch?

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-12 19:10
UncleOwen
Was mache ich falsch?

Du liest nicht, was hier bereits steht.

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-12 19:35
Anonymer User
Ich hab das schon gelesen und das so gemacht, aber trotzdem klappt das bei mir nicht

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 01:25
Lümmel
Falls Du mit Eclipse arbeitest:

Project/Properties => Java Build Path/Libraries und dann per "Add Jars" die beiden Jars von der VSIS Seite hinzufügen (die im Projekt Verzeichnis liegen müssen).

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 21:17
RaggaDee
Hmm… wie Krieg ich das ResultSet ausgedruckt….toString() nicht, oder??

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 21:31
Farcon
Hmm… wie Krieg ich das ResultSet ausgedruckt….toString() nicht, oder??
Doch die toString Methode, es gibt aber zwei davon; getString(int n) gibt die Spalte n aus; getString(String name) gibt die Spalte name aus.

edit: da.source, hast natürlich recht…

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 21:36
Da:Sourcerer
Hmm… wie Krieg ich das ResultSet ausgedruckt….toString() nicht, oder??
Doch die toString Methode, es gibt aber zwei davon; toString(int n) gibt die Spalte n aus; toString(String name) gibt die Spalte name aus.

Jungs? Was macht ihr da? AFAIK heisst die Methode getString(…).

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 22:16
RaggaDee
Erstmal Danke Jungs, bin mittlerweile selbst draufgekommen… immer ätzend diese Fummelei, bis man merkt, dass es auch hätte fixer von statten gehen können :-). Nu gehts eigentlich, nur …

Lassen Sie sich per SQL-Abfrage die Namen der Angestellten (Staff) ausgeben, deren Name mit 'G' beginnt

…versteh ich nicht die Staff Table nicht. ICh denke die soll bei der Anfrage nicht benutzt werden, oder? Was soll der Hinweis? Also was ist Staff überhaupt genau….. nunächst mal :-)


EDIT
…versteh ich nicht die Staff Table nicht.
So Ragga GAGA [img]http://www.fb18.de/gfx/24.gif[/img]

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-13 22:57
Da:Sourcerer
Lassen Sie sich per SQL-Abfrage die Namen der Angestellten (Staff) ausgeben, deren Name mit 'G' beginnt

…versteh ich nicht die Staff Table nicht. ICh denke die soll bei der Anfrage nicht benutzt werden, oder? Was soll der Hinweis? Also was ist Staff überhaupt genau….. nunächst mal :-)

Mein Ü-Leiter hat mir heute morgen erklärt, dass das ein Relikt aus einer älteren Version des Aufgabenzettels ist.
Die Datenbasis an der wir arbeiten ist wohl Teil einer Beispieldatenbank, die nicht richtig viel Sinn macht. Die Unterscheidung zwischen "Staff" und "Employee" ist z.B. nicht nachvollziehbar.

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-15 14:19
Anonymer User
Kann es sein, dass es keinen "Firstname" in Employee gibt???

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-15 14:38
Da:Sourcerer
Kann es sein, dass es keinen "Firstname" in Employee gibt???

Hatten wir das nicht schon? Auszug aus der ddl.txt:
------------------------------------------------ -- DDL Statements for table "DB2INST1"."EMPLOYEE" ------------------------------------------------ CREATE TABLE "DB2INST1"."EMPLOYEE" ( "EMPNO" CHAR(6) NOT NULL , [b]"FIRSTNME" VARCHAR(12) NOT NULL ,[/b] "MIDINIT" CHAR(1) NOT NULL , . . .

Also "FIRSTNME" statt "FIRSTNAME".

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-16 13:51
Anonymer User
Ich habe nochmal ne Frage:
Wenn ich die Ausgabe hübsch machen möchte, z.B. bei Teilaufgabe 2, wie schaffe ich das, so dass alle Namen die gleiche Feldanzahl haben, danach die Berufe alle schön anfagen usw.
Also das es so aussieht:
Name Beruf Abteilung
Julian Student WiInf
Sören Student Inf

Und nicht so:
Name Beruf Abteilung
Julian Student WiInf
Sören Student Inf
Mahatma Student Theologie

Gruss

JULIAN


Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-16 19:40
Da:Sourcerer
jr meinte, es gäbe da eine Möglichkeit in SQL für jede Spalte den längsten Wert zu ermitteln, so das man alles fein formatieren könne.
Einfach darauf warten, das jr hier mal vorbeiguckt oder einen Blick in die SQL-Doku werfen [img]http://www.fb18.de/gfx/25.gif[/img]

Re: P3 Aufgabenblatt 5 Aufgabe 2 2004-01-16 21:33
Alter Sack
Es gibt über das ResultSet Metadaten, die Du mit resultSet.getMetaData() erhältst. Das Metadatenobjekt hat dann eine Methode resultSetMetaData.getColumnDisplaySize(int column) mit der Du die Breite der Spalte abfragen kannst.

Wenn Du nun eine Schleife durchläufst, die Dir ein int-Array erzeugt, in das Du diese Daten schreiben läßt, kannst Du über eine kleine Berechnung die Anzahl der Leerfelder berechnen, die Du mit der jeweiligen Stringausgabe konkatenierst und schon sollte das laufen.

Gruß, Dirk