Ich möchte den Wert an SP-Parameter dynamisch übergeben. ist es möglich mit CallableStatement und PreparedStatement?Wie übergibt man den Wert dynamisch an sp mit Java?
Connection con=null;
Drivername="com.microsoft.sqlserver.jdbc.SQLServerDriver";.
Connectionname="jdbc:sqlserver://localhost:1433;databaseName=test;
Class.forName(Drivername);
con = DriverManager.getConnection(Connectionname,USER_NAME, PWD);
PreparedStatement pstmt = con.prepareStatement("sp_help sp_emp_det");
ResultSet rs = pstmt.executeQuery();
List<String> lstint= new ArrayList<String>();
pstmt.getMoreResults(); //returns set of resultset in boolean
rs = pstmt.getResultSet();
while(rs.next())
{
System.out.println(rs.getString(2)); //checking input parameter list
lstint.add(rs.getString(2)); // getting list of parameter's datatype from sp and push into Arraylist
}
pstmt = con.prepareStatement("{call sp_emp_det(?,?,?)}");
for (int i=1; i<=lstint.size() ; i++)
{
pstmt.setString(i,lstValue.get(i-1));
}
rs = pstmt.executeUpdate(); //throws error on here which mentioned below
//to retrive resultset from the sp
while(rs.next())
{
String s=rs.getString(1);
System.out.println("s : "+s);
}
wenn ich executeUpdate() insteadof executeQuery() Execute_SP.java:43: inkompatible Typen gefunden: int erforderlich: java.sql.ResultSet ResultSet rs = pstmt.executeUpdate();
wenn ich executeQuery() verwenden, über Code, gibt sie den resultset und zeigt den Wert von s aus Backend
I get Liste der Eingangsparameter aus sp ich versucht, der gut arbeitet und versucht, die Werte zu übergeben dynamisch
Liste der Parameter für die sp auf die Parameter
Parameter_name Type
@ename nvarchar
@position varchar
@expr int
wenn unter Verwendung mit exceuteUpdate(): die feinen
arbeitetBitte helfen Sie mir, dieses Problem zu lösen.
Die Methode executeUpdate gibt ein int zurück, kein ResultSet - daher die Ausnahme. –
@ dsp_user- oh k .. eigentlich versuche ich Werte von der Liste an den Eingangsparameter - sp zu übergeben. In sp, ich unten Eingang haben Parameter ** Parametername Typ ename nvarchar Position varchar ausdr int ** aber in Java i verwendet, um die Werte von List von Code unten passieren for (int i = 1; i <= lstint.size(); i ++) { pstmt.setString (i, lstValue.get (i-1)); } jetzt erhalten Fehler als ** com.microsoft.sqlserver.jdbc.SQLServerException: Der Wert ist nicht für die Parameternummer 1 festgelegt. ** auf die Verwendung von pstmt.executeQuery() mit dem obigen Code. –
Viswa
Das bedeutet nur, dass lstint.size() 0 zurückgibt, so dass der Code innerhalb der for-Schleife nie ausgeführt wird. Was soll PreparedStatement pstmt = con.prepareStatement ("sp_help sp_emp_det") tun? –