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

Obtener valor de un SP desde c#

Estas en el tema de Obtener valor de un SP desde c# en el foro de .NET en Foros del Web. Hola estoy haciendo un programa en c# son SP(StoreProcedure) de sql, lo que pasa es que no se como recibir el valor que me retorna ...
  #1 (permalink)  
Antiguo 02/02/2011, 10:16
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 1
Obtener valor de un SP desde c#

Hola estoy haciendo un programa en c# son SP(StoreProcedure) de sql, lo que pasa es que no se como recibir el valor que me retorna mi SP, colo el SP en la parte de abajo:
Como se puede observar el SP recibe 2 parámetros que le envio desde mi programa c#, pero el me regresa una varible llamada @respuesta, el problema es que del lado de c# no se como ricibirla, abajo del código del SP, está el código c# que hasta ahorita tengo, gracias.

////////////////////////////////////////////////////////////////////////////////////////////
StoreProcedure
ALTER procedure [dbo].[BuscarUsuario]
@usuario char(30),
@contraseña char(30)

as
begin
declare @respuesta int
if Exists(Select * From usuarios Where usuario = @usuario and contraseña = @contraseña)
begin
-- SQL statements to update tables and process order.
set @respuesta=1
end
else
begin
set @respuesta=0
end
return @respuesta
PRINT 'Valor de la respuesta: ' + CONVERT(CHAR(6),@respuesta)
end

/////////////////////////////////////////////////////////////////////////////////////////////
C#
using (SqlConnection connection = new SqlConnection("Data Source=xxxx; Initial Catalog=xxx; User Id=xxx; Password=xxx;"))
{
try
{
using (SqlCommand command = new SqlCommand())
{
connection.Open();
command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "BuscarUsuario";
command.CommandTimeout = 10;
command.Parameters.AddWithValue("@usuario", usuario);
command.Parameters.AddWithValue("@contraseña", contrseña);

command.ExecuteNonQuery();

connection.Close();
}
}
  #2 (permalink)  
Antiguo 02/02/2011, 10:22
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Obtener valor de un SP desde c#

Hola artspider! el executeNonQuery te retorna un 1 si es que ha hecho la transaccion ó 0 cuando no se realizo, lo que podrias hacer alli hacer un executeScalar para que te retorne el valor en string, pero antes crea una variable y mandale el executeScalar asi :

Código c#:
Ver original
  1. using (SqlConnection connection = new SqlConnection("Data Source=xxxx; Initial Catalog=xxx; User Id=xxx; Password=xxx;"))
  2. {
  3. try
  4. {
  5. using (SqlCommand command = new SqlCommand())
  6. {
  7. string valor; //Creo la variable
  8. connection.Open();
  9. command.Connection = connection;
  10. command.CommandType = System.Data.CommandType.StoredProcedure;
  11. command.CommandText = "BuscarUsuario";
  12. command.CommandTimeout = 10;
  13. command.Parameters.AddWithValue("@usuario", usuario);
  14. command.Parameters.AddWithValue("@contraseña", contrseña);
  15.  
  16. valor = command.ExecuteScalar(); //Le asigno el valor que retorna a la variable
  17.  
  18. connection.Close();
  19.  
  20. MessageBox.Show(valor); //Verificas si devuelve el resultado que esperas.
  21. }
  22. }
Saludos.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 02/02/2011, 12:58
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Obtener valor de un SP desde c#

Ya probé compañero, pero sigue igual me da un valor de 0 para todo, muchas gracias de todos modos, seguire buscando
  #4 (permalink)  
Antiguo 02/02/2011, 13:14
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Obtener valor de un SP desde c#

te sigue saliendo 0 ? probablemente aya un error en tu SP con las ñ cambiales la ñ por n en tu tablam y en todos lo que contengan ñ, probablemente sea por eso. Saludos
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 02/02/2011, 13:27
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Obtener valor de un SP desde c#

Bueno lo que me aconsejan también es que la variable de retorno la declare en el SP, como OUTPUT, para que me la regrese, pero igual no se como recibirla en el código C#, gracias pot toda la ayuda
  #6 (permalink)  
Antiguo 02/02/2011, 13:35
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Obtener valor de un SP desde c#

facil trata de trabajar de la siguiente manera

Código C#:
Ver original
  1. Comando.Parameters.Add(new SqlParameter("@param1", SqlDbType.Int));
  2. Comando.Parameters.Add(new SqlParameter("@param2", SqlDbType.VarChar));
  3. Comando.Parameters.Add(new SqlParameter("@param3", SqlDbType.VarChar));
  4.  
  5. Comando.Parameters["@param1"].Direction = ParameterDirection.Output;
  6.  
  7. Comando.Parameters["@param1"].Value = 0;
  8. Comando.Parameters["@param2"].Value = "abc";
  9. Comando.Parameters["@param3"].Value = "def";
  10.  
  11. Comando.ExecuteNonQuery();
  12.  
  13. int value = Comando.Parameters["@param1"].Value;
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 02/02/2011, 13:46
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Obtener valor de un SP desde c#

Ya salio!!! muchas gracias compañeros, agradezco bastante la ayuda...
  #8 (permalink)  
Antiguo 02/02/2011, 14:36
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Obtener valor de un SP desde c#

Postea tu solución.

Saludos!
__________________
http://ka0stj.wordpress.com/
  #9 (permalink)  
Antiguo 02/02/2011, 15:16
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Obtener valor de un SP desde c#

A ok tienes razón, aquí está:

/////////////////////////////////////////////////////////////////////////////////////////////
Esto es la parte de SQL:

ALTER procedure [dbo].[BuscarUsuario]
@usuario char(30),
@contraseña char(30),
@respuesta int OUTPUT

as
begin

if Exists(Select * From usuarios Where usuario = @usuario and contraseña = @contraseña)
begin
-- SQL statements to update tables and process order.
set @respuesta=1
end
else
begin
set @respuesta=0
end
return @respuesta
PRINT 'Valor de la respuesta: ' + CONVERT(CHAR(6),@respuesta)
end


/////////////////////////////////////////////////////////////////////////////////////////////
Esto es la parte de C#:
using (SqlCommand command = new SqlCommand())
{
connection.Open();
command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "BuscarUsuario";
command.CommandTimeout = 10;

command.Parameters.Add(new SqlParameter("@usuario", SqlDbType.VarChar));
command.Parameters.Add(new SqlParameter("@contraseña", SqlDbType.VarChar));
command.Parameters.Add(new SqlParameter("@respuesta", SqlDbType.VarChar));

command.Parameters["@respuesta"].Direction = ParameterDirection.Output;

command.Parameters["@usuario"].Value = usuario;
command.Parameters["@contraseña"].Value = contraseña;
command.Parameters["@respuesta"].Value = "";

command.ExecuteNonQuery();
valor = command.Parameters["@Respuesta"].Value.ToString();
connection.Close();
}

Etiquetas: Ninguno
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 11:35.