Java & Stored procedures (SQL, JDBC)

shutdown

Erfahrenes Mitglied
Offensichtlich werden in der Datenbank keine Daten gefunden.

Sind die Parameter korrekt?
Wenn du das direkt auf der Datenbank ausführst - funktioniert das dann?
Logge mal den Verkehr über den JDBC-Treiber mit, was wird an die Datenbank geschickt?
Ist es das, was du willst, dass da hingeschickt werden soll?
 

programma

Mitglied
Hi wenn ich es direkt auf der Datenbank ausprobiere funktioneirt das!
Das ist ja das komische dass es dann darüber nicht funktioniert?

ja das ist das was ich möchte das wird vernünftig übergeben aber bekomme kein return wert!
Meine Prozedur hat ein Input, Output parameter
so hier wird sie über die db aufgerufen.

declare @vS varchar(50)
BEGIN
exec pruefe '00000',@vS output
print @vS
END

so funktioniert das aber über java funktioniert das.
 
Zuletzt bearbeitet:

shutdown

Erfahrenes Mitglied
Logge mal mit, was an die Datenbank geschickt wird - und überprüfe das!

Java:
     DriverManager.setLogWriter(new PrintWriter(System.out));

Alternativ in Datei umleiten.

Da ich jetzt nicht weiß, wie du deine Verbindung machst, kann ich dir erst mal auch nicht helfen, wenn du mit obigen Befehl nicht weiterkommst => mehr Info's für uns, evtl mehr Infos für dich.
 

programma

Mitglied
Hi mein connect wird so aufgebaut:

PHP:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
			
			Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=db", "sa","sa");
				
	 CallableStatement cs = con.prepareCall("{ call pruefe '000', "+ output + " output }");
			 			 
			 ResultSet isrs = cs.executeQuery();


hab mir schon einen anderen treiber geladen aber hat nix geholfen.

fehlermeldung sieht so aus:
PHP:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Keine Ergebnisse verfügbar.
	at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
	at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
	at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
	at connect.main(connect.java:33)
SQLException: SQLState(HY000)
 

programma

Mitglied
Hallo ich habe es jetzt endlich rausbekommen hier die lösung:


PHP:
 CallableStatement cs = con.prepareCall("{ call pruefe(?,?)}");
			 cs.registerOutParameter(2,Types.VARCHAR);
			 cs.setString(1, parameters);
			 			 
			  cs.execute();
			  output = cs.getString(2);
			System.out.println("output " + output);

vielen dank nochmal für die hilfe
 

Oliver Gierke

Erfahrenes Mitglied
Aaaargs... ich sags ungern ein 5. Mal: Bitte nutz die DataSource Abstraktion um die Connection herzustellen! Das JavaDoc weist da ausdrücklich drauf hin.

Gruß
Ollie
 

programma

Mitglied
Hi warum ein Prepared statement?
ich habe doch sowieso nur ein wert den ich zurückbekomme also brauche ich auch da nicht durchzuiterieren.

mfg
programma