none
GUARDAR UN DATASET SERVICIO WEB RRS feed

  • Pregunta

  •  

    Un saludo a todos.

    Estoy intentando actualizar un base de datos en un servidor remoto y se me ha ocurrido lo siguiente.

    He creado un Servicio web que accede a esa base de datos y tiene un metodo que acepta un dataset. desde una aplicacion local mando el dataset al servicio web y luego intento guardarlo con un dataadapter. Dos preguntas

    1.) es esta manera correcta o se puede hacer mejor de otra manera?

    2.) Por que no se actualiza la base de datos remota? en que fallo?

     

    Como estoy en pruebas tomo el dataset del propio servicio web (el cual me devuelve datos de forma correcta)

    y los intento mandar con InsertaTest. No da error pero no guarda nada ... sniff

     

    codigo cliente

     

    Dim i As New WindowsApplication1.com.sitio

    Dim ds As New DataSet

    Dim myCache As New System.Net.CredentialCache()

    myCache.Add(New Uri(https://stio), "Basic", New System.Net.NetworkCredential("u", "p"))

    i.Credentials = myCache

    ds = i.GetDataset()

    i.InsertaTest(ds)

    ds = Nothing

     

     

    codigo servicio web

     

        <WebMethod(Description:="inserta un conjunto de registros de una tabla de la base de datos ")> _
     Public sub InsertaTest(myDataSet As DataSet)

     

     Dim myConnection As SqlConnection
          
            myConnection = New SqlConnection("Data Source=(Local);UID=usr;PWD=pwd;DATABASE=db")
            mySqlDataAdapter = New SqlDataAdapter("Select * from tabla", myConnection)


            ' Build the insert Command
            mySqlDataAdapter.InsertCommand = New SqlCommand("Insert into DIRECCIONES_tabla (ACCOUNT_NUMBER, EMAIL_ADDRESS) VALUES (@ACCOUNT_NUMBER, @EMAIL_ADDRESS)", myConnection)

     

      Dim   parametroInsert1 As SqlParameter = New SqlParameter _
        ("@ACCOUNT_NUMBER", SqlDbType.Char, 10)

    parametroInsert1.SourceColumn = "ACCOUNT_NUMBER"
    parametroInsert1.SourceVersion = DataRowVersion.Current
     


      Dim   parametroInsert2 As SqlParameter = New SqlParameter _
        ("@EMAIL_ADDRESS", SqlDbType.Char,250)

    parametroinsert2.SourceColumn = "EMAIL_ADDRESS"
    parametroinsert2.SourceVersion = DataRowVersion.Current


    mySqlDataAdapter.InsertCommand.Parameters.Add(parametroInsert1)
    mySqlDataAdapter.InsertCommand.Parameters.Add(parametroInsert2)

     

    mySqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

            
    mySqlDataAdapter.Update(myDataSet)

        

      end sub

     

    Gracias de antemano, un saludo

    martes, 18 de septiembre de 2007 20:19

Respuestas

  • Bueno amiguitos,

    se me ha ocurrido esto:

    en el cliente entre la obtencion del dataset y el envio del dataset

     

    For ij = 0 To ds.Tables(0).Rows.Count - 1

    ds.Tables(0).Rows(ij).SetAdded()

    Next

     

    Entonces el servicio entiende que las columnas del dataset han sido modificadas y las guarda.

    todas la filas.

    Salu2

    miércoles, 19 de septiembre de 2007 18:56