Académique Documents
Professionnel Documents
Culture Documents
El objeto SqlDataAdapter sirve de puente entre un objeto DataSet de ActiveX Data Objects (ADO) .NET y
una base de datos de SQL Server. Se trata de un objeto intermediario que llena un conjunto de datos de
ADO .NET con datos que se recuperan de una base de datos de SQL Server, a continuacin actualiza la base
de datos para reflejar los cambios (como inserciones, actualizaciones y eliminaciones) que se efectan en los
datos mediante el objeto DataSet.
Las propiedades InsertCommand, UpdateCommand y DeleteCommand del
objeto SqlDataAdapter actualizan la base de datos con las modificaciones de datos que se ejecutan en un
objeto DataSet. Estas propiedades son objetos SqlCommandque especifican los comandos INSERT, UPDATE
y DELETE de Transact-SQL que se utilizan para exponer las modificaciones del conjunto de datos en la base
de datos de destino. Los objetos SqlCommand que se asignan a estas propiedades pueden crearse
manualmente en el cdigo o generarse automticamente utilizando el objeto SqlCommandBuilder.
El primer ejemplo de cdigo de este artculo demuestra cmo utilizar el objeto SqlCommandBuilder para
generar de forma automtica la propiedad UpdateCommand del objeto SqlDataAdapter. El segundo
ejemplo utiliza un escenario en el que no se puede utilizar la generacin automtica de comandos, para
demostrar cmo se puede crear y utilizar manualmente un objeto SqlCommand como
propiedad UpdateCommand de un objeto SqlDataAdapter.
50.
51.
52.
53.
54.
55.
56.
Console.WriteLine("=====================================================")
Console.WriteLine(cmdBuilder.GetDeleteCommand.CommandText)
Console.WriteLine("
")
eliminado o que no contiene los valores originales que se encuentran en DataSet, el comando no afecta a
ningn registro y se genera una excepcinDBConcurrencyException.
Si desea que la instruccin UPDATE se complete independientemente de los valores originales, debe
establecerUpdateCommand para DataAdapter y no basarse en la generacin automtica de comandos.
Para crear e inicializar manualmente la propiedad UpdateCommand del objeto SqlDataAdapter que se
utiliza en el ejemplo de cdigo n 1, siga estos pasos:
1. Sustituya el cdigo existente en Sub Main de Module1 de la aplicacin de consola de Visual Basic .NET
que cre en el ejemplo de cdigo n 1 por lo siguiente:
2. Dim cn As New SqlConnection()
3. Dim CustomersDataSet As New DataSet()
4. Dim da As SqlDataAdapter
5. Dim dr As DataRow
6. Dim DAUpdateCmd As SqlCommand
7.
8.
9. cn.ConnectionString = "Server=.;Database=northwind;UID=sa;PWD=;"
10. cn.Open()
11.
12. da = New SqlDataAdapter("select * from CustTest order by CustID", cn)
13.
14. 'Inicializar el objeto SqlCommand que se utilizar como UpdateCommand de
DataAdapter.
15. 'Observe que la clusula WHERE utiliza nicamente el campo CustID para buscar el
registro que se ha de actualizar.
16.
17. DAUpdateCmd = New SqlCommand("Update CustTest set CustName = @pCustName where
CustID = @pCustId", da.SelectCommand.Connection)
18.
19.
20. 'Crear y anexar los parmetros para el comando Update.
21.
22. DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustName", SqlDbType.VarChar))
23. DAUpdateCmd.Parameters("@pCustName").SourceVersion = DataRowVersion.Current
24. DAUpdateCmd.Parameters("@pCustName").SourceColumn = "CustName"
25.
26. DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustId", SqlDbType.Int))
27. DAUpdateCmd.Parameters("@pCustId").SourceVersion = DataRowVersion.Original
28. DAUpdateCmd.Parameters("@pCustId").SourceColumn = "CustID"
29.
30.
31. 'Asignar la propiedad SqlCommand a la propiedad UpdateCommand de SqlDataAdapter.
32. da.UpdateCommand = DAUpdateCmd
33.
34. da.Fill(CustomersDataSet, "Customers")
35.
36. Console.WriteLine("Nombre de cliente antes de Update: " &
CustomersDataSet.Tables("Customers").Rows(0)("CustName"))
37.
38. CustomersDataSet.Tables("Customers").Rows(0)("CustName") = "Toni"
39. da.Update(CustomersDataSet, "Customers")
40.
41. Console.WriteLine("Nombre del cliente actualizado correctamente")
42.
43. cn.Close()
Console.ReadLine()