Pasar parametros!!!

26/02/2004 - 20:41 por ylexis | Informe spam
Hola!!

Estoy haciendo un servicio web el cual tengo metodos que
hacen consultas a bases de datos.

El punto es que tengo un metodo que recibe parametros sql
para ejecutar store procedure y devuelve el resultado en
un dataset pero mi problema es que el ws no permite que le
envie los parametros del store procedure.

Sugerencias..

Gracias

Ylexis Martinez

Preguntas similare

Leer las respuestas

#1 Camilo Villa
27/02/2004 - 16:23 | Informe spam
Ylexis Martinez

Primero que todo, como esta implementado tu código, es decir que tipos de
parametros recibe tu ws. y cómo los estás enviando desde el aplicativo que
lo instancia.

si tu web service recibe en el metodo parametros Sql, cuando lo invocas a
traves de tu proxy, debes tambien enviarle un objeto de este tipo.

Ejemplo:

[WebMethod()]
public DataSet consultar_KnowBD(SqlParameter intIdPregunta, SqlParameter
strPregunta)
{
// aqui se coloca el código correspondiente al StoreProcedure que se encarga
de realizar la consulta solicitada
}


por allá en el cliente
existe una clase proxy que llama a la clase webservice, digamos que se llama
miProxy.

SqlParameter IdParam= new SqlParameter(TxtIdValor.Text, SqlDbType.Int);
SqlParameter BodyPregunta = new SqlParameter(TxtCuerpoPregunta.Text,
SqlDbType.VarChar);

Dataset objDataSet=miProxy.consultar_KnowBD( IdParam, BodyPregunta);

y ya este DataSet lo ligas con lo que necesites...

te tiene que funcionar... sino fíjate como se genero la clase proxy en tu
cliente, adicionalmente fíjate que los métodos que quieres exponer con el
web service, sean públicos.

Espero te sea claro,


Salu2

Camilo Villa
APTECH Certified Visual Studio .NET - Microsoft 3 DCE
"ylexis" escribió en el mensaje
news:28ce01c3fca0$7e972f30$
Hola!!

Estoy haciendo un servicio web el cual tengo metodos que
hacen consultas a bases de datos.

El punto es que tengo un metodo que recibe parametros sql
para ejecutar store procedure y devuelve el resultado en
un dataset pero mi problema es que el ws no permite que le
envie los parametros del store procedure.

Sugerencias..

Gracias

Ylexis Martinez
Respuesta Responder a este mensaje
#2 Anonimo
01/03/2004 - 17:27 | Informe spam
Gracias por responder.

Fijate, recibo en el ws parametros sql

public DataSet aExecuteDataset(string sp, params
SqlParameter[] commandParameters)


y en el cliente lo envio de esta forma.
string resultado = this.ExecuteScalar("storeProcedure",
new SqlParameter("@campo1", campo1),
new SqlParameter("@campo2", campo2),
new SqlParameter("@campo3", campo3));


Saludos.



Ylexis Martinez

Primero que todo, como esta implementado tu código, es


decir que tipos de
parametros recibe tu ws. y cómo los estás enviando desde


el aplicativo que
lo instancia.

si tu web service recibe en el metodo parametros Sql,


cuando lo invocas a
traves de tu proxy, debes tambien enviarle un objeto de


este tipo.

Ejemplo:

[WebMethod()]
public DataSet consultar_KnowBD(SqlParameter


intIdPregunta, SqlParameter
strPregunta)
{
// aqui se coloca el código correspondiente al


StoreProcedure que se encarga
de realizar la consulta solicitada
}


por allá en el cliente
existe una clase proxy que llama a la clase webservice,


digamos que se llama
miProxy.

SqlParameter IdParam= new SqlParameter(TxtIdValor.Text,


SqlDbType.Int);
SqlParameter BodyPregunta = new SqlParameter


(TxtCuerpoPregunta.Text,
SqlDbType.VarChar);

Dataset objDataSet=miProxy.consultar_KnowBD( IdParam,


BodyPregunta);

y ya este DataSet lo ligas con lo que necesites...

te tiene que funcionar... sino fíjate como se genero la


clase proxy en tu
cliente, adicionalmente fíjate que los métodos que


quieres exponer con el
web service, sean públicos.

Espero te sea claro,


Salu2

Camilo Villa
APTECH Certified Visual Studio .NET - Microsoft 3 DCE
"ylexis" escribió en el


mensaje
news:28ce01c3fca0$7e972f30$
Hola!!

Estoy haciendo un servicio web el cual tengo metodos que
hacen consultas a bases de datos.

El punto es que tengo un metodo que recibe parametros




sql
para ejecutar store procedure y devuelve el resultado en
un dataset pero mi problema es que el ws no permite que




le
envie los parametros del store procedure.

Sugerencias..

Gracias

Ylexis Martinez




.

Respuesta Responder a este mensaje
#3 Camilo Villa
02/03/2004 - 05:57 | Informe spam
Ylexis Martinez

Saludos:

Debes crear en el cliente una objeto del mismo tipo del que tiene la
referencia en el WS.
Es decir:

si tienes (string sp, SqlParameter[] commandParameters)

y en el cliente lo envias de esta forma.
string resultado = this.ExecuteScalar("storeProcedure", new
SqlParameter("@campo1", campo1), new SqlParameter("@campo2", campo2),
new SqlParameter("@campo3", campo3));
Aquí es donde fallas. debes crear un vector deobjetos parameter en el
cliente y este vector es la que pasas como parámetro... y no uno a uno los
objetos que conforman dicho vector.

Me explico en vez de lo anterior que quiere decir que tienes en tu WS un
método que reconoce como parámetros una cadena, seguida de 3 objetos de tipo
SqlParameter. - según tengo entendido, el WS recibe en su método un string
que es el nombre del SP, y un vector de objetos tipo SqlParameter. - son dos
cosas completamente distintas. Yo haría algo así en el cliente:

//Creo el vector de obtejo tipo SqlParameter.
SqlParameter[] miColeccion= new SqlParameter[3];

// Le asigno en cada posicion del vector el parámetro respectivo.
miColeccion[0]=new SqlParameter("@campo1", campo1);
miColeccion[1]=new SqlParameter("@campo2", campo2);
miColeccion[2]=new SqlParameter("@campo3", campo3);

// Luego cuando llamo el proxy utilizo:
string Resultado= this.ExecuteScalar("StoreProcedure", miColeccion);

me cuantas cualquier duda


Salu2,

Camilo Alfonso Villa N.
APTECH Certified Visual Studio .NET - Microsoft 3 DCE


escribió en el mensaje
news:4ade01c3ffaa$1c9ed3c0$

Gracias por responder.

Fijate, recibo en el ws parametros sql

public DataSet aExecuteDataset(string sp, params
SqlParameter[] commandParameters)


y en el cliente lo envio de esta forma.
string resultado = this.ExecuteScalar("storeProcedure",
new SqlParameter("@campo1", campo1),
new SqlParameter("@campo2", campo2),
new SqlParameter("@campo3", campo3));


Saludos.



Ylexis Martinez

Primero que todo, como esta implementado tu código, es


decir que tipos de
parametros recibe tu ws. y cómo los estás enviando desde


el aplicativo que
lo instancia.

si tu web service recibe en el metodo parametros Sql,


cuando lo invocas a
traves de tu proxy, debes tambien enviarle un objeto de


este tipo.

Ejemplo:

[WebMethod()]
public DataSet consultar_KnowBD(SqlParameter


intIdPregunta, SqlParameter
strPregunta)
{
// aqui se coloca el código correspondiente al


StoreProcedure que se encarga
de realizar la consulta solicitada
}


por allá en el cliente
existe una clase proxy que llama a la clase webservice,


digamos que se llama
miProxy.

SqlParameter IdParam= new SqlParameter(TxtIdValor.Text,


SqlDbType.Int);
SqlParameter BodyPregunta = new SqlParameter


(TxtCuerpoPregunta.Text,
SqlDbType.VarChar);

Dataset objDataSet=miProxy.consultar_KnowBD( IdParam,


BodyPregunta);

y ya este DataSet lo ligas con lo que necesites...

te tiene que funcionar... sino fíjate como se genero la


clase proxy en tu
cliente, adicionalmente fíjate que los métodos que


quieres exponer con el
web service, sean públicos.

Espero te sea claro,


Salu2

Camilo Villa
APTECH Certified Visual Studio .NET - Microsoft 3 DCE
"ylexis" escribió en el


mensaje
news:28ce01c3fca0$7e972f30$
Hola!!

Estoy haciendo un servicio web el cual tengo metodos que
hacen consultas a bases de datos.

El punto es que tengo un metodo que recibe parametros




sql
para ejecutar store procedure y devuelve el resultado en
un dataset pero mi problema es que el ws no permite que




le
envie los parametros del store procedure.

Sugerencias..

Gracias

Ylexis Martinez




.

Respuesta Responder a este mensaje
#4 ylexis
02/03/2004 - 13:30 | Informe spam
Saludos,

modifique lo que me enviaste pero ahora el es me esta
presentando este error:


The type 'System.Data.SqlClient.SqlParameter' cannot be
serialized because its parameterless constructor is
decorated with declarative security permission attributes.
Consider using imperative asserts or demands in the
constructor.






Ylexis Martinez

Saludos:

Debes crear en el cliente una objeto del mismo tipo del


que tiene la
referencia en el WS.
Es decir:

si tienes (string sp, SqlParameter[] commandParameters)

y en el cliente lo envias de esta forma.
string resultado = this.ExecuteScalar("storeProcedure",


new
SqlParameter("@campo1", campo1), new SqlParameter


("@campo2", campo2),
new SqlParameter("@campo3", campo3));
Aquí es donde fallas. debes crear un vector deobjetos


parameter en el
cliente y este vector es la que pasas como parámetro... y


no uno a uno los
objetos que conforman dicho vector.

Me explico en vez de lo anterior que quiere decir que


tienes en tu WS un
método que reconoce como parámetros una cadena, seguida


de 3 objetos de tipo
SqlParameter. - según tengo entendido, el WS recibe en


su método un string
que es el nombre del SP, y un vector de objetos tipo


SqlParameter. - son dos
cosas completamente distintas. Yo haría algo así en el


cliente:

//Creo el vector de obtejo tipo SqlParameter.
SqlParameter[] miColeccion= new SqlParameter[3];

// Le asigno en cada posicion del vector el parámetro


respectivo.
miColeccion[0]=new SqlParameter("@campo1", campo1);
miColeccion[1]=new SqlParameter("@campo2", campo2);
miColeccion[2]=new SqlParameter("@campo3", campo3);

// Luego cuando llamo el proxy utilizo:
string Resultado= this.ExecuteScalar("StoreProcedure",


miColeccion);

me cuantas cualquier duda


Salu2,

Camilo Alfonso Villa N.
APTECH Certified Visual Studio .NET - Microsoft 3 DCE


escribió en el


mensaje
news:4ade01c3ffaa$1c9ed3c0$

Gracias por responder.

Fijate, recibo en el ws parametros sql

public DataSet aExecuteDataset(string sp, params
SqlParameter[] commandParameters)


y en el cliente lo envio de esta forma.
string resultado = this.ExecuteScalar("storeProcedure",
new SqlParameter("@campo1", campo1),
new SqlParameter("@campo2", campo2),
new SqlParameter("@campo3", campo3));


Saludos.



Ylexis Martinez

Primero que todo, como esta implementado tu código, es


decir que tipos de
parametros recibe tu ws. y cómo los estás enviando desde


el aplicativo que
lo instancia.

si tu web service recibe en el metodo parametros Sql,


cuando lo invocas a
traves de tu proxy, debes tambien enviarle un objeto de


este tipo.

Ejemplo:

[WebMethod()]
public DataSet consultar_KnowBD(SqlParameter


intIdPregunta, SqlParameter
strPregunta)
{
// aqui se coloca el código correspondiente al


StoreProcedure que se encarga
de realizar la consulta solicitada
}


por allá en el cliente
existe una clase proxy que llama a la clase webservice,


digamos que se llama
miProxy.

SqlParameter IdParam= new SqlParameter(TxtIdValor.Text,


SqlDbType.Int);
SqlParameter BodyPregunta = new SqlParameter


(TxtCuerpoPregunta.Text,
SqlDbType.VarChar);

Dataset objDataSet=miProxy.consultar_KnowBD( IdParam,


BodyPregunta);

y ya este DataSet lo ligas con lo que necesites...

te tiene que funcionar... sino fíjate como se genero la


clase proxy en tu
cliente, adicionalmente fíjate que los métodos que


quieres exponer con el
web service, sean públicos.

Espero te sea claro,


Salu2

Camilo Villa
APTECH Certified Visual Studio .NET - Microsoft 3 DCE
"ylexis" escribió en el


mensaje
news:28ce01c3fca0$7e972f30$
Hola!!

Estoy haciendo un servicio web el cual tengo metodos






que
hacen consultas a bases de datos.

El punto es que tengo un metodo que recibe parametros




sql
para ejecutar store procedure y devuelve el resultado






en
un dataset pero mi problema es que el ws no permite que




le
envie los parametros del store procedure.

Sugerencias..

Gracias

Ylexis Martinez




.





.

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