FB18 - Das Forum für Informatik

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

P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2

P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-06 20:41
Anonymer User
Ich versuche die Aufgabe 2 zu lösen, kann mich auch zum Server connecten, aber es kommt immer wieder der sleber Fehler, und zwar springt das Programm immer in die Exception "Fehler bei Datenbankabfrage." aber weiss nicht wieso. In der main()-Methode habe ich das versucht:
———-
AccessDB accessDB = new AccessDB();
accessDB.connect();
accessDB.askDB("SELECT Firstname, Lastname, Job, WorkDept, Salary FROM db2inst1.Employee");
accessDB.closeStatement();
———-

Aber klappt nicht, und weiss nicht wieso, habe ich mich etwa vertippt? Wenn ja, wo, oder ist der Fehler iergendwo anders?

———-
public ResultSet askDB (String query){
statement = null;
ResultSet resultSet = null;
try {
statement = con.createStatement();
} catch (SQLException e) {
System.out.print("Statement konnte nicht erzeugt werden.");
}
try {
resultSet = statement.executeQuery(query);
} catch (SQLException e1) {
System.out.print("Fehler bei Datenbankabfrage.");
}
return resultSet;
}
———-

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-06 20:56
georg
} catch (SQLException e1) { System.out.print("Fehler bei Datenbankabfrage."); }

Mach da doch mal etwas aussagekräftigeres hin.
Z.B. e1.printStackTrace();

Dann wird statt "Fehler bei Datenbankabfrage" auch angezeigt,
wo der Fehler aufgetreten ist und was genau schief gelaufen
ist.

Edit: Und poste dann nochmal die Ausgabe! [img]http://www.fb18.de/gfx/22.gif[/img]

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-06 21:01
Anonymer User
Habe das versucht:
accessDB.askDB("SELECT Firstname FROM db2inst1.Employee");
Dann kam folgender Fehler:
com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -206, SQLSTATE: 42703, SQLERRMC: FIRSTNAME
at com.ibm.db2.jcc.a.co.e(co.java:1361)
at com.ibm.db2.jcc.a.co.a(co.java:984)
at com.ibm.db2.jcc.b.bd.g(bd.java:121)
at com.ibm.db2.jcc.b.bd.a(bd.java:42)
at com.ibm.db2.jcc.b.r.a(r.java:31)
at com.ibm.db2.jcc.b.bp.g(bp.java:103)
at com.ibm.db2.jcc.a.co.g(co.java:968)
at com.ibm.db2.jcc.a.co.a(co.java:1599)
at com.ibm.db2.jcc.a.co.a(co.java:301)
at com.ibm.db2.jcc.a.co.executeQuery(co.java:285)
at AccessDB.askDB(AccessDB.java:48)
at AccessDB.main(AccessDB.java:87)

Was könnte falsch gelaufen sein? Ich rätsel noch immer…

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-06 21:08
Anonymer User
Fehler gefunden:

Der Datenbankersteller hat einen Fehler gemacht, kann man auch in der ddl.txt nachlesen, anstatt Firstname steht da Firstnme

Ok, der Code klappt sonst gut.

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-07 01:20
sChQrf
na siehste ^^
wozu is man informatiker? improvisieren is angesagt [img]http://www.fb18.de/gfx/22.gif[/img]
die eigene software so bauen, dass sie mit der fehlerhaften software der anderen (und zwar nur mit dieser) loift [img]http://www.fb18.de/gfx/24.gif[/img]

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-07 12:03
Anonymer User
Bei der folgenden Abfrage
accessDB.askDB("SELECT Workdept, AVG(Salary) FROM db2inst1.EmployeeWHERE AVG(Salary)>30000 GROUP BY Workdept");

KOmmt immer eine sqlException auf mit
com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: >30000;yeeWHERE AVG(Salary);<space>

Verstehe aber nicht ganz was das zu bedeuten hat

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-07 12:07
Slater
eine nette Seite mit allen Fehlermeldungen ist folgende
http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp?topic=/com.ibm.db2v7.doc/db2m0/sql0300.htm

man muss natürlich trotzdem noch raten, was genau gemeint ist,

hier wahrscheinlich kein Leerzeichen zwischen Tabellenname und WHERE?

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-07 16:16
NaZo
Bei der folgenden Abfrage
accessDB.askDB("SELECT Workdept, AVG(Salary) FROM db2inst1.EmployeeWHERE AVG(Salary)>30000 GROUP BY Workdept");

KOmmt immer eine sqlException auf mit
com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: >30000;yeeWHERE AVG(Salary);<space>

Verstehe aber nicht ganz was das zu bedeuten hat

Ich glaube, man kann in einem WHERE-Statement keine Funktionen wie AVG benutzen.

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-07 18:57
Brokkoli
EDIT: so damit hier keine lösungen stehen mal anders:

The HAVING clause can refer to aggregate functions, which the WHERE clause cannot:
mysql> SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10;

(aus dem MySQL Manual http://dev.mysql.com/doc/mysql/en/SELECT.html )

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-08 01:51
Anonymer User
Wie war das noch gleich mit Lösungen posten?

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-08 12:01
Slater
also SQL-Syntax kann ja wohl nicht die Aufgabe sein oder? ;)

Re: P3 - Aufgabenzettel will ich nicht verraten - Aufgabe2 2005-01-08 14:16
Anonymer User
kommt mir aber aso vor, das macht mir zumindest die meisten probleme