SELECT auf database

fenerli23

Erfahrenes Mitglied
hi,
mein einsicht nach müsste mein Code stimmen, jedoch tritt irgendwie immer ein Fehler auf könnt ihr mal gucken bitte...
 
Zuletzt bearbeitet:
hi,
mein einsicht nach müsste mein Code stimmen, jedoch tritt irgendwie immer ein Fehler auf könnt ihr mal gucken bitte...

Code:
...
			
			//hier wir der Select Befehl ausgeführt
			//Datenbank wird hier rausgelesen 
			rset = stmt.executeQuery("SELECT LAST_NAME,FIRST_NAME, DEPARTMENT_ID, MANAGER_ID FROM employees" +
					"WHERE DEPARTMENT_ID = 50  " +
					"AND MANAGER_ID = 120");
			
			// declare constants for column indexes in the query 
			final int EMPLOYEE_COLUMN_INDEX = 1;
			...

FEHLER:
Code:
error messgae: ORA-00933: SQL-Befehl wurde nicht korrekt beendet

java.sql.SQLException: ORA-00933: SQL-Befehl wurde nicht korrekt beendet

	....


Wenn Du Dir mal Dein SQL-Statement ausgeben läßt (s.o. fettgedruckt), wirst Du feststellen, dass ein Leerzeichen fehlt.

Es muß wie folgt lauten:
Code:
rset = stmt.executeQuery("SELECT LAST_NAME,FIRST_NAME, DEPARTMENT_ID, MANAGER_ID FROM employees[_]" +
					"WHERE DEPARTMENT_ID = 50  " +
					"AND MANAGER_ID = 120");

Das [_] ist durch ein Leerzeichen zu ersetzen...
 
stimmt dank dir nun kommt diese Fehlermeldung:

Code:
error messgae: Konvertierung zu interner Darstellung nicht erfolgreich
java.sql.SQLException: Konvertierung zu interner Darstellung nicht erfolgreich
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
	at oracle.jdbc.driver.CharCommonAccessor.getInt(CharCommonAccessor.java:132)
	at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:521)
	at select.GetSelect.main(GetSelect.java:65)
 
Was steht denn in
Code:
at select.GetSelect.main(GetSelect.java:65)
Zeile 65 +- in der GetSelect.java?
 
Zuletzt bearbeitet:
Ich denke das es daran liegt, dass du nur vier Spalten hast und auf die Fünfte zugreifen willst. (SELECT LAST_NAME,FIRST_NAME, DEPARTMENT_ID, MANAGER_ID)

Vielleicht eher SELECT * FROM ....
 
ja daran hats gelegen... aber kann ich nicht einen code erstellen indem ich den Select befehl willkürlich immer verändern kann?
 
Du kannst mit

ResultSetMetaData rsmd = resultSet.getMetaData();
int numberOfColumns = rsmd.getColumnCount();

die Anzahl der Spalten auslesen und dann mit einer for-Schleife auslesen.

while(resultSet.next())
{
for (int i=1; i <= numberOfColumns;i++)
{
try
{
System.out.println(rsmd.getColumnName(i)+" "+ resultSet.getString(i));
}
catch (Exception ex)
{
System.out.println(ex);
}
}
}
 
Zuletzt bearbeitet:
Wenn du das in dein Programm eingebaut hast, könnte es daran liegen das deine Variable für das ResultSet "rset" lautet. Also in meinem Programmcode resultSet durch rset ersetzten.
 
Zurück