Ich versuche, den zurückgegebenen Wert einer gespeicherten MySQL Funktion aus dem JDBC-Code, der wie folgt ist (ich benutze MySQL Server 5.7.13) zu drucken:Fehler im JDBC-Code Aufruf einer gespeicherten Funktion, die einen Wert
package jdbc;
import java.sql.DriverManager;
import java.sql.*;
import java.util.Scanner;
public class CallableStatementsCallingFunctions {
public static void main(String... syrt)
{
try
{
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e)
{
System.out.println("Error(class): "+ e);
}
try
{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/collablestatement","root","mysql") ;
CallableStatement cs = conn.prepareCall("{call ?:=getBalance1(?)}");
String s = new Scanner(System.in).nextLine();
cs.registerOutParameter(1,Types.INTEGER);
cs.setInt(2,Integer.parseInt(s));
cs.execute();
System.out.println("Account number :" + cs.getInt(1));
conn.close();
}
catch(SQLException e)
{
System.out.println("Error(SQL) : "+e);
}
}
catch(Exception e)
{
System.out.println("Error(Fro outer try) : "+ e);
}
}
}
die gespeicherte Funktion getBalance1(acno)
wird hier gezeigt
meine Code-Ausgabe wird hier
gezeigtich die Ausgabe von dem SQL-Befehl bekommen, aber in JDBC Ich erhalte und SQLException
sagen, dass
Parameter 1 ist nicht ein Ausgabeparameter
Ich weiß, dass Parameter 1 als Platzhalter des zurückgegebenen Werts aus der Funktion in JDBC-Code verwendet wurde. In prepareCall
habe ich auch versucht, die Syntax - {?:= call getBalance1(?)}
, aber auch dann immer die gleiche Ausnahme.
Warum bekomme ich die Ausnahme?
eine schnelle Schätzung ist cs.getString ("1"); –