Artigo: 320141 - Última revisão: sexta-feira, 26 de Dezembro de 2003 - Revisão: 5.4

COMO: Obter um valor de identidade de um registo recentemente inserido do SQL Server utilizando o Visual Basic .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo passo a passo descreve como obter o valor de identidade quando adiciona um registo numa tabela do SQL Server com um campo de identidade.

Requisitos


Este exemplo utiliza a base de dados no SQL Server e obtém os valores de identidade apenas para DataTables com não tabelas subordinadas. Também pode ser utilizado com o MSDE; no entanto, a base de dados Adamastor não está incluída no MSDE. Para obter informações sobre como utilizar este procedimento com o MSDE, consulte a secção de Troubleshooting deste artigo.


Um campo de identidade do SQL Server é um campo de número automático pode definir um valor incremental. Por este motivo, não é possível inserir ou actualizar um valor neste campo, desde que Identity_ Inserir está desactivado, que é a predefinição para um campo de identidade do SQL Server.

Exemplo

  1. Iniciar Visual Studio .NET e, em seguida, crie um novo projecto de aplicação do Windows do Visual Basic:
    1. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
    2. Na caixa de diálogo Novo projecto , clique em Projectos do Visual Basic em Project Types e, em seguida, clique em Aplicação do Windows em modelos .
  2. Arraste um botão para o formulário a partir do Windows Forms caixa de ferramentas.
  3. Na parte superior da janela de código, adicione a seguinte linha:
    Imports System.Data.SqlClient
  4. Colar o seguinte código para o botão clique evento:
    Dim ds As New DataSet()
    
    Dim cnNorthwind As New SqlConnection("server=(local);integrated security=sspi;database=Northwind")
    Dim cmSelect As New SqlCommand("select employeeid,firstname,lastname from employees", cnNorthwind)
    
    Dim stInsert As String
    stInsert = "insert into employees (firstname,lastname) values(@Firstname,@Lastname);select employeeid,firstname,lastname from employees where employeeID = @@identity"
    Dim cmInsert As New SqlCommand()
    
    With cmInsert
       .CommandText = stInsert
       .CommandType = CommandType.Text
       .Connection = cnNorthwind
       .Parameters.Add(New SqlParameter("@firstname", Data.SqlDbType.VarChar, 25, "firstname"))
       .Parameters.Add(New SqlParameter("@lastname", Data.SqlDbType.VarChar, 25, "Lastname"))
    End With
    
    Dim daNorthwind As New SqlDataAdapter()
    With daNorthwind
       .SelectCommand = cmSelect
       .InsertCommand = cmInsert
    End With
    
    daNorthwind.Fill(ds, "employees")
    Dim dr As DataRow
    dr = ds.Tables("employees").NewRow
    dr(1) = "John"
    dr(2) = "Doe"
    ds.Tables("employees").Rows.Add(dr)
            
    daNorthwind.Update(ds, "employees")
    ds.AcceptChanges()
    Dim i As Int16
    For i = 0 To ds.Tables("Employees").Rows.Count - 1
        With ds.Tables("Employees")
           Debug.WriteLine("EmployeeID: " & .Rows(i)(0).ToString)
           Debug.WriteLine("Employee Firstname: " & .Rows(i)(1).ToString)
           Debug.WriteLine("Employee LastName: " & .Rows(i)(2).ToString)
        End With
    Next i
    					
  5. Altere a cadeia de ligação para reflectir as informações do SQL Server ou MSDE.
  6. Execute a aplicação.
  7. Clique no botão.

    A informação do campo de identidade do registo recém-inserido é apresentada.

Resolução de problemas

Antes de utilizar este procedimento, com o MSDE tem de utilizar Data Transformation Services (DTS) para importar a base de dados Adamastor para SQL Server ou o Microsoft Access.

Referências

Para obter informações adicionais sobre como devolver o valor de identidade para registos, clique números de artigo existentes abaixo para visualizar os artigos na base de dados de conhecimento da Microsoft:
320301  (http://support.microsoft.com/kb/320301/EN-US/ ) COMO: Actualizar dados de ascendente-subordinado com coluna de identidade de uma aplicação Windows Forms através de um serviço Web
Para obter informações adicionais sobre como utilizar DTS, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
242377  (http://support.microsoft.com/kb/242377/EN-US/ ) Como utilizar serviços de transformação de dados (DTS)
Para obter informações adicionais sobre como converter uma base de dados do Microsoft Access para o SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
237980  (http://support.microsoft.com/kb/237980/EN-US/ ) COMO: Converter base de dados do Access para o SQL Server
Para obter informações adicionais sobre como obter identificações das colunas no Visual Basic 6.0, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
170147  (http://support.microsoft.com/kb/170147/EN-US/ ) COMO: Obter a coluna de identidade após inserir utilizando RDO



A informação contida neste artigo aplica-se a:
  • 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 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft Data Engine 1.0
Palavras-chave: 
kbmt kbhowtomaster KB320141 KbMtpt
Tradução automáticaTradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 320141  (http://support.microsoft.com/kb/320141/en-us/ )