Java & Stored procedures (SQL, JDBC)

programma

Mitglied
Hallo,

ich möchte gerne über meine Java Applikation eine Prozedur anschmeißen die mir auch etwas zurückliefert.

Die Prozedur heißt "prüfe" - SQL Datenbank

wie rufe ich diese Prozedur über meine Java Applikation auf?

wäre euch für eine schnelle Antwort dankbar.

mfg
programma
 

programma

Mitglied
ja ich meine das so dass ich die prozedur aufrufen möchte die auf meiner datenbank liegt.
da muss ich ja erstmal wahrscheinlich ein connect auf meine datenbank machen und dann

gibt es dann eine methode nach dem connect sowas wie execute("pruefe") oder sowas?
 

Oliver Gierke

Erfahrenes Mitglied
Redest du von Stored Procedures? Dann einfach per JDBC den entsprechenden Query absetzen. Wie JDBC funktioniert, steht in der Java Insel.

Gruß
Ollie
 

programma

Mitglied
ja genau ich meine stored procedures!

wie rufe ich eine stored procedure auf wenn ich einen Datenbank connect hergestellt habe?
 

shutdown

Erfahrenes Mitglied
Die Klasse Statement hat mehrere Methoden, mit denen du beliebige oder bestimmte SQL-Befehle auf die Datenbank loslassen kannst. Was du dann loslässt, liegt an dir - du kannst also auch schreiben

Java:
Statement stmt = con.createStatement();
stmt.execute("Execute doSomething()");
 

programma

Mitglied
Hallo aber wenn ich nun stm.execute("pruefe") aufrufe also die prozedur aufrufe gibt es als rückgabewert nur einen boolean!

meine Pruefe Stored Procedure liefert aber einen String zurück.

Was nun?
 

Oliver Gierke

Erfahrenes Mitglied
Die API ist dein Freund! Ich würde dir raten auf Connection prepareStatement(String sql) zu rufen. Das gibt dir ein PreparedStatement zurück, auf dem du executeQuery rufen kannst, was wiederum ein ResultSet zurück gibt, über das du iterieren kannst.

Wie das SQL genau auszusehen hat entnimmst du der Dokumentation deines DB Herstellers. Meistens irgendwas mit "call ${name.der.stored.procedure};"

Gruß
Ollie
 

programma

Mitglied
Hallo,

jetzt habe ich es geschafft die Stored Procedure anzusprechen aber jetzt bekomme ich als Exception:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.

Der aufruf findet so statt:

PHP:
String callString = "{call pruefe('" + parameters + "') } ";
			 CallableStatement cs = con.prepareCall(callString);
			 logger.debug("Prozedur wird aufgerufen");
	
			 
			 ResultSet rs = cs.executeQuery();


was mache ich falsch?
 
Zuletzt bearbeitet: