C# 2005 y StoreProcedure de Sql

06/05/2009 - 07:09 por Javier Montero | Informe spam
Buen dia amigos
Soy algo novato en esta parte de conectar aplicaciones a SQL, deseo
primeramente consultarles lo siguiente:
1. Es preferible usar el DataSet que crea el wizard del Visual C# o es
preferible crear una cadena de conexion para la aplicacion
2. Deseo conectar varias StoreProcedure de mi DB SQL a una aplicacion C# que
lo que hare uno de los Store para explicarles es registrar compras, me
gustaria me puedan orientar o dar una idea de como es el codigo C# para
conectar o enviar la informacion de mi formulario a mi Store el cual si el
registro se creo correctamente devolvera 0 y sino sera 1 lo que devolvera el
store como error

Gracias de antemano por su ayuda y consejos
Atentamente
Javier Montero

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
06/05/2009 - 08:40 | Informe spam
"Javier Montero" wrote in message
news:
Soy algo novato en esta parte de conectar aplicaciones a SQL, deseo
primeramente consultarles lo siguiente:
1. Es preferible usar el DataSet que crea el wizard del Visual C# o es
preferible crear una cadena de conexion para la aplicacion



Bueno, lo que hace el Wizard es precisamente crear una cadena de
conexión para la aplicación. La cadena se guarda automáticamente en el
archivo de configuración. Desde ahi puedes sacarla y usarla en cualquier
otro sitio aunque no tenga nada que ver con el DtaSet, exactamente igual que
si hubieras creado la cadena manualmente.

2. Deseo conectar varias StoreProcedure de mi DB SQL a una aplicacion C#
que lo que hare uno de los Store para explicarles es registrar compras, me
gustaria me puedan orientar o dar una idea de como es el codigo C# para
conectar o enviar la informacion de mi formulario a mi Store el cual si el
registro se creo correctamente devolvera 0 y sino sera 1 lo que devolvera
el store como error



Ejemplo:
Supongamos que el SP es asi:
CREATE PROCEDURE Prueba
@UnDato varchar(50)
AS
Insert Compras Values(@UnDato)
Return 1
GO

Para llamarlo desde el programa cliente:

SqlConnetion cn = new SqlConnection(cadenaDeConexion);
SqlCommand cmd = new SqlCommand("Prueba", cn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parm1 = cmd.Parameters.Add("@UnDato", SqlDbType.Varchar,50);
parm1.Value = "El Valor";
SqlParameter parmResultado = new SqlParameter("Return_Value",
SqlDbType.Int);
parmResultado.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(parmResultado);
cn.Open();
cmd.ExecuteNonQuery();
int resultado = (int)parmResultado.Value;
cn.Close();
Respuesta Responder a este mensaje
#2 Javier Montero
07/05/2009 - 06:54 | Informe spam
"Alberto Poblacion" wrote
in message news:%
"Javier Montero" wrote in message
news:
Soy algo novato en esta parte de conectar aplicaciones a SQL, deseo
primeramente consultarles lo siguiente:
1. Es preferible usar el DataSet que crea el wizard del Visual C# o es
preferible crear una cadena de conexion para la aplicacion



Bueno, lo que hace el Wizard es precisamente crear una cadena de
conexión para la aplicación. La cadena se guarda automáticamente en el
archivo de configuración. Desde ahi puedes sacarla y usarla en cualquier
otro sitio aunque no tenga nada que ver con el DtaSet, exactamente igual
que si hubieras creado la cadena manualmente.

2. Deseo conectar varias StoreProcedure de mi DB SQL a una aplicacion C#
que lo que hare uno de los Store para explicarles es registrar compras,
me gustaria me puedan orientar o dar una idea de como es el codigo C#
para conectar o enviar la informacion de mi formulario a mi Store el cual
si el registro se creo correctamente devolvera 0 y sino sera 1 lo que
devolvera el store como error



Ejemplo:
Supongamos que el SP es asi:
CREATE PROCEDURE Prueba
@UnDato varchar(50)
AS
Insert Compras Values(@UnDato)
Return 1
GO

Para llamarlo desde el programa cliente:

SqlConnetion cn = new SqlConnection(cadenaDeConexion);
SqlCommand cmd = new SqlCommand("Prueba", cn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parm1 = cmd.Parameters.Add("@UnDato", SqlDbType.Varchar,50);
parm1.Value = "El Valor";
SqlParameter parmResultado = new SqlParameter("Return_Value",
SqlDbType.Int);
parmResultado.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(parmResultado);
cn.Open();
cmd.ExecuteNonQuery();
int resultado = (int)parmResultado.Value;
cn.Close();




Super te agradezco mucho trabaje mis store a las mil maravillas, solo tengo
una ultima duda que he estado batallando hoy casi toda la tarde, yo dentro
de mi Store tengo programado ciertos mensajes de validaciones que hago, veo
que al querer agregar un duplicado trabaja bien pero como puedo hacer para
que esos mensajes de SQL Error muestre el texto, observe que en la ventanita
de error en tiempo de debug mi dice SP_AddMessage y el texto de mi error,
pero como puedo capturar ese texto y pasarlo a una ventana de error para el
usuario. Dejo el mensaje que tengo programado a nivel de SQL

/*Valido no venga vacio el numero de compra*/
IF @CompCod IS NULL
BEGIN
PRINT 'Debe de Proporcionar una Codigo de Compra'
RETURN
END

/*Valido la compra no exista*/
IF EXISTS
(Select compcodigo From ComprasRegistro where compcodigo = @CompCod)
BEGIN
RAISERROR(50010, 16, 1)
PRINT 'COMPRA YA EXISTE, NO SE PUEDE REPETIR NUMERO DE COMPRA'
RETURN
END

Agradezco tu ayuda Alberto y el de los demas partner del grupo
Javier Montero
Respuesta Responder a este mensaje
#3 Alberto Poblacion
07/05/2009 - 08:41 | Informe spam
"Javier Montero" wrote in message
news:%
Super te agradezco mucho trabaje mis store a las mil maravillas, solo
tengo una ultima duda que he estado batallando hoy casi toda la tarde, yo
dentro de mi Store tengo programado ciertos mensajes de validaciones que
hago, veo que al querer agregar un duplicado trabaja bien pero como puedo
hacer para que esos mensajes de SQL Error muestre el texto, observe que en
la ventanita de error en tiempo de debug mi dice SP_AddMessage y el texto
de mi error, pero como puedo capturar ese texto y pasarlo a una ventana de
error para el usuario. Dejo el mensaje que tengo programado a nivel de SQL

/*Valido no venga vacio el numero de compra*/
IF @CompCod IS NULL
BEGIN
PRINT 'Debe de Proporcionar una Codigo de Compra'
RETURN
END

[...]



Para capturar los PRINT se usa un evento del objeto Connection que se
llama InfoMessage:

SqlConnection cn = new SqlConnection(cadena);
cn.InfoMessage += new SqlInfoMessageEventHandler(MensajeRecibido);
//usar ahora la conexión para llamar a los procedimientos
...

private void MensajeRecibido(sender As Object, e As SqlInfoMessageEventArgs)
{
//El PRINT nos llega aquí dentro de e.Message
}
Respuesta Responder a este mensaje
#4 Mauricio Atanache
08/05/2009 - 03:42 | Informe spam
Yo usaría en su lugar la función Raiserror en el procedimiento almacenado,
así creo un error, con el texto de error que me convenga.


Cordial saludo,



Mauricio Atanache G.

"Alberto Poblacion"
escribió en el mensaje de noticias:#
"Javier Montero" wrote in message
news:%
Super te agradezco mucho trabaje mis store a las mil maravillas, solo
tengo una ultima duda que he estado batallando hoy casi toda la tarde, yo
dentro de mi Store tengo programado ciertos mensajes de validaciones que
hago, veo que al querer agregar un duplicado trabaja bien pero como puedo
hacer para que esos mensajes de SQL Error muestre el texto, observe que
en la ventanita de error en tiempo de debug mi dice SP_AddMessage y el
texto de mi error, pero como puedo capturar ese texto y pasarlo a una
ventana de error para el usuario. Dejo el mensaje que tengo programado a
nivel de SQL

/*Valido no venga vacio el numero de compra*/
IF @CompCod IS NULL
BEGIN
PRINT 'Debe de Proporcionar una Codigo de Compra'
RETURN
END



[...]



Para capturar los PRINT se usa un evento del objeto Connection que se
llama InfoMessage:

SqlConnection cn = new SqlConnection(cadena);
cn.InfoMessage += new SqlInfoMessageEventHandler(MensajeRecibido);
//usar ahora la conexión para llamar a los procedimientos
...

private void MensajeRecibido(sender As Object, e As
SqlInfoMessageEventArgs)
{
//El PRINT nos llega aquí dentro de e.Message
}


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida