Foros del Web » Programación para mayores de 30 ;) » Java »

Procedimiento Almacenado en Java

Estas en el tema de Procedimiento Almacenado en Java en el foro de Java en Foros del Web. Buenas comunidad: Tengo la siguiente clase de consola para mi procedimiento almacenado (pretendo borrar los registros a través de la variable RUT) package ProcedimientoAlmacenado; import ...
  #1 (permalink)  
Antiguo 28/09/2011, 13:31
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Procedimiento Almacenado en Java

Buenas comunidad:

Tengo la siguiente clase de consola para mi procedimiento almacenado
(pretendo borrar los registros a través de la variable RUT)



package ProcedimientoAlmacenado;

import java.sql.*;
import java.util.*;
import java.io.*;

public class ProcedimBorrar {
private Connection Conexion;
private CallableStatement cstmt = null ;
public ProcedimBorrar(Connection Con) {

Conexion = Con;
}

public static void main(String args[]) throws Exception
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLSer verDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://MARTE:1433;DatabaseName=Prueba", "sa", "gsiinformatica");
//Step-1

CallableStatement cstmt = con.prepareCall("{call ProcedAlmac_BorraPersona(?,?,?)}");
Scanner sc=new Scanner(System.in);

// Statement stmt = con.createStatement();
// Si fuese integer System.out.print("Enter the Employee No: ");
//int x=sc.nextInt();



//System.out.print("Ingrese el nombre: ");
//String nombre = sc.next();

//System.out.print("Ingrese el apellido: ");
//String apellido = sc.next();

System.out.println("Ingrese el RUT: ");
String rut = sc.next();


//Step-2
//cstmt.setString(1,nombre);
//cstmt.setString(2,apellido);
cstmt.setString(3,rut);

//Step -3
cstmt.execute();
System.out.println("***Llamada a Procedimiento Almacenado****");
System.out.println("Persona eliminada con Exito");
con.close();
}

}

Me tira el siguiente error:


Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: El valor no está configurado para el número de parámetro 2.
at com.microsoft.sqlserver.jdbc.SQLServerException.ma keFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.b uildParamTypeDefinitions(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.buildPreparedStrings(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.doPrepExec(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.execute(Unknown Source)
at ProcedimientoAlmacenado.ProcedimBorrar.main(Proced imBorrar.java:46)


Este es mi procedimiento almacenado:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[ProcedAlmac_BorraPersona]
@nombre varchar(30),
@apellido varchar(20),
@rut varchar(12)
AS
BEGIN
DELETE
FROM tbl_persona
WHERE rut = @rut

END
  #2 (permalink)  
Antiguo 28/09/2011, 15:14
Avatar de Nahikarii  
Fecha de Ingreso: agosto-2011
Mensajes: 16
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Procedimiento Almacenado en Java

Me parece que tu procedure pide que le envies 3 valores : nombre, apellidos y el rut.
A lo que tu solo le mandas el rut porque los otros datos los tienes en comentario.
  #3 (permalink)  
Antiguo 29/09/2011, 12:19
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Procedimiento Almacenado en Java

Solucionado:

Lo que tenía que hacer era lo siguiente:

Cambiar el procedimiento almacenado por esto:

ALTER PROCEDURE [dbo].[ProcedAlmac_BorraPersona]
@rut varchar(12)
AS
BEGIN
DELETE
FROM tbl_persona
WHERE rut = @rut

END

Le estaba enviando 3 parámetros cuando era sólo 1.

Mil gracias por la respuesta.

Etiquetas: consola, sql-server-2005
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:48.