Como executar atualizações em massa e inserções usando o método OpenXML com provedores de .NET no Visual Basic .NET

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 316244
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 315968.

Para uma versão deste artigo do Microsoft Visual C++. NET, consulte 316245.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.Data
  • System.Data.SqlClient

NESTA TAREFA

INTRODUÇÃO
Este artigo passo a passo descreve como realizar inserções em massa e atualizações com diferentes provedores de dados do Microsoft .NET usando o método OpenXML no Microsoft Visual Basic. NET. O projeto de exemplo neste artigo usa o Microsoft SQL Server gerenciado provedor .NET (SqlClient). No entanto, você também pode usar o Microsoft .NET Managed provedor OLEDB ou o provedor Microsoft ODBC .NET gerenciado.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000, Microsoft Windows XP ou Microsoft Windows Server 2003
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 2000

Criar o projeto

Observação Este projeto de exemplo não contém código que executa o tratamento de erros.
  1. Use o seguinte código para criar uma tabela na sua instância do Microsoft SQL Server 2000:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Employee]GOCREATE TABLE [dbo].[Employee] (	[EmployeeId] [int] NOT NULL ,	[FirstName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,	[LastName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]GO
  2. Use o seguinte código para criar um procedimento armazenado na sua instância do SQL Server 2000:
    CREATE PROC sp_UpdateXML @empdata nTextAS  DECLARE @hDoc int    exec sp_xml_preparedocument @hDoc OUTPUT,@empdata   --This code updates old data. UPDATE Employee  SET    Employee.FirstName = XMLEmployee.FirstName,   Employee.LastName = XMLEmployee.LastName FROM OPENXML(@hDoc, 'NewDataSet/Employee')          WITH (EmployeeId Integer, FirstName varchar(100),  LastName varchar(100))  XMLEmployeeWHERE    Employee.EmployeeId = XMLEmployee.EmployeeId--This code inserts new data.Insert Into Employee SELECT   EmployeeId, FirstName, LastName	FROM       OPENXML (@hdoc, '/NewDataSet/Employee',1)WITH (EmployeeId Integer, FirstName varchar(100),  LastName varchar(100))  XMLEmployeeWhere XMLEmployee.EmployeeId Not IN (Select EmployeeID from Employee)EXEC sp_xml_removedocument @hDocGO
  3. Inicie o Microsoft Visual Studio .NET e crie um novo projeto Visual Basic.NET Console Application. Por padrão, o arquivo Module1.vb é criado.
  4. Substitua o código existente no arquivo Module1.vb com o código a seguir.

    Observação No código a seguir, modifique a seqüência de conexão para o seu ambiente:
    Imports SystemImports System.Data.SqlClientImports System.DataModule Module1   Sub Main()      Try         BulkInsertUpdate()         System.Console.WriteLine("Successfully inserted and updated data.")         System.Console.Read()      Catch e As System.Data.SqlClient.SqlException         System.Diagnostics.Debug.WriteLine(e.Message)         System.Console.WriteLine(e.Message)      End Try   End Sub   Sub BulkInsertUpdate()      ' Steps:      ' 1. Create the data set.      ' 2. Update the data set.      ' 3. Insert some data.      ' 4. Save the changed data as XML, and then send the XML to       ' SQL Server through the stored procedure.      ' Declaration      Dim objDS As System.Data.DataSet      Dim objCon As SqlConnection      Dim objCom1 As SqlCommand      Dim objAdpt1 As SqlDataAdapter      Dim sConn As String      sConn = "user id=UserName;password=YourPassword;Database=master;Server=ServerName"      objDS = New DataSet()      objCon = New SqlConnection(sConn)      objCon.Open()      objCom1 = New SqlCommand()      objCom1.Connection = objCon      objAdpt1 = New SqlDataAdapter()      ' Step 1: Create the data set.      CreateDataSetFromEmployee(objDS, objCom1, objAdpt1)      ' Step 2: Update the data set.      Dim tbl As System.Data.DataTable = objDS.Tables("Employee")      Dim i As Integer = 0      Dim aRow As DataRow      For Each aRow In tbl.Rows         i = i + 1         aRow("FirstName") = aRow("FirstName").ToString() & i.ToString()         aRow("LastName") = aRow("LastName").ToString() & i.ToString()      Next      ' Step 3: Insert some data.      Dim ii As Integer      For ii = 1 To 5 Step ii + 1         Dim NewRow As DataRow = tbl.NewRow()         Dim j As Integer = ii + 100         NewRow("EmployeeId") = j         NewRow("FirstName") = "Fname" + j.ToString()         NewRow("LastName") = "LName" + j.ToString()         tbl.Rows.Add(NewRow)      Next      ' 4. Save the changed data as XML, and then send the XML to       ' SQL Server through the stored procedure.      ' In your instance of SQL Server, you have already saved a stored       ' procedure that accepts this XML and updates the corresponding table.      SaveThroughXML(objDS, objCon)   End Sub   Sub SaveThroughXML(ByVal objDS As DataSet, ByVal objCon As SqlConnection)      'Change the column mapping.      Dim tbl As DataTable = objDS.Tables("Employee")      Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder(1000)      Dim sw As System.IO.StringWriter = New System.IO.StringWriter(sb)      Dim col As DataColumn      For Each col In tbl.Columns         col.ColumnMapping = System.Data.MappingType.Attribute      Next      objDS.WriteXml(sw, System.Data.XmlWriteMode.WriteSchema)      Dim objCom As SqlCommand = New SqlCommand()      objCom.Connection = objCon      objCom.CommandType = CommandType.StoredProcedure      objCom.CommandText = "sp_UpdateXML"      objCom.Parameters.Add(New SqlParameter("@empdata", System.Data.SqlDbType.NText))      objCom.Parameters(0).Value = sb.ToString()      objCom.ExecuteNonQuery()   End Sub   Sub CreateDataSetFromEmployee(ByVal objDS As DataSet, ByVal objCom1 As SqlCommand, ByVal objAdpt1 As SqlDataAdapter)      ' Create related objects.      objCom1.CommandType = CommandType.Text      objCom1.CommandText = "Select EmployeeId, FirstName, LastName from Employee"      ' Fill the Orders table.      objAdpt1.SelectCommand = objCom1      objAdpt1.TableMappings.Add("Table", "Employee")      objAdpt1.Fill(objDS)   End SubEnd Module
  5. Pressione F5 para compilar e executar o aplicativo. Uma janela de console aparece com a seguinte mensagem:
    Dados inseridos e atualizados com êxito.
  6. Pressione ENTER para fechar a janela de console.
Referências
Para obter informações adicionais sobre como usar .NET Managed provedores, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
313480INFO: Guia para provedores de dados do .NET

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 316244 - Última Revisão: 12/07/2015 08:40:29 - Revisão: 1.3

Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition

  • kbnosurvey kbarchive kbmt kbdatabase kbdataadapter kbxml kbprovider kbsample kbcode kbhowtomaster KB316244 KbMtpt
Comentários