none
problemas con WCF y dataset RRS feed

  • Pregunta

  • Hola, me gustaría que me ayudaran con un servicio que estoy creando, se trata de  crear un método que  mostrará el precio de un producto al ingresarsele el código del mismo, estos datos los saco de AdventureWorks, donde creé un procedimiento almacenado:

     

     

    CREATE PROCEDURE ConsultarPrecio
    
    (@IdProducto int)
    
    AS
    
    BEGIN
    
     SELECT ListPrice FROM Production.Product where ProductID=@IdProducto
    
    END 
    
    GO
    

     

    -------------------------------------------------------------------------------------------

    Mientras en el proyeco de VS2010 de bliblioteca de WCF, en el Service1.cs tengo esto:

     

     

    public DataSet GetProducto(DataSet ds)
    
     {
    
      SqlConnection cn = new SqlConnection();
    
      cn.ConnectionString = "Data Source=.;Initial Catalog=AdventureWorks2008;Integrated Security=True";
    
      cn.Open();
    
    SqlDataAdapter da = new SqlDataAdapter();
    
      SqlCommand cmdSelect = new SqlCommand();
    
      cmdSelect.Connection = cn;
    
      ds.Tables.Add("Production.Product"); 
    
      cmdSelect.Parameters.Add("@IdProducto", SqlDbType.Int, 4, "ProductID");
    
      cmdSelect.CommandType = CommandType.StoredProcedure;
    
      cmdSelect.CommandText = "ConsultarPrecio";
    
    
    
      da.SelectCommand = cmdSelect;
    
      da.Fill(ds.Tables["Production.Product"]);
    
      return ds;
    
    }
    
    Cuando inicio la depuración, me muestra el cliente de prueba sin problemas, muestra mi método, pero cuando ingreso el codigo de x producto, me muestra un error de execute, y me dice que se esperaba el parámetro de "@IdProducto", que se supone es el que le escribo, no sé como debería hacer el método, sobre todo porque en otros casos me gustaría mostrar la tabla completa.

     

     

     

    jueves, 3 de febrero de 2011 20:32

Respuestas

  • Hola Yoshito.

     

    Tu codigo esta bien solo hasta cierta parte. Te falta añadir el value de tu parámetro Podrias redefinir tu metodo haciendo lo siguiente:

    public DataSet GetProducto(DataSet ds, int _valorParametro)
     {
     SqlConnection cn = new SqlConnection();
     cn.ConnectionString = "Data Source=.;Initial Catalog=AdventureWorks2008;Integrated Security=True";
     cn.Open();
     //SqlDataAdapter da = new SqlDataAdapter();
     SqlCommand cmdSelect = new SqlCommand();
     cmdSelect.Connection = cn;
     cmdSelect.CommandType = CommandType.StoredProcedure;
     ds.Tables.Add("Production.Product"); 
     cmdSelect.Parameters.Add("@IdProducto", SqlDbType.Int, 4, "ProductID");
    // Aqui le asignas el valor a tu parametro @IdProducto
     cmdSelect.Parameters["@IdProducto"].Value = 4;
     cmdSelect.CommandText = "ConsultarPrecio";
     ds.Tables["Production.Product"].Load(cmdSelect.ExecuteReader());
      return ds;
    }
    
    Espero estar en lo correcto y que te haya servido.. No tengo como probar el codigo.. ahora pero creo que esta bien =D Suerte


    Atentamente. Eduardo Pérez Leyton
    viernes, 11 de febrero de 2011 18:48