Você está na página 1de 2

COMO: Recuperar o valor de identidade enquanto inserindo registros

no banco de dados Access usando Visual Basic .NET


ID do artigo: 815629 - Exibir os produtos aos quais esse artigo se aplica.

Exibir Aviso de Isenção de Tradução Automática


Clique aqui para exibir o artigo traduzido e o artigo original em inglês, lado a lado.

Sumário

Este artigo passo a passo descreve como recuperar o valor da coluna de identidade de um banco de dados.

Recuperando o valor de identidade de um banco de dados Jet é diferente do que SQL Server, como um banco de dados Jet não dá suporte a
comandos de lote de várias instruções. A versão do Jet OLE DB provider 4.0 suporta a consulta Selecione @@Identity que permite recuperar o
valor do campo de incremento automático que é gerado em sua conexão. Para executar a consulta SELECT @@Identity , é recomendável que
você usar outro objeto OleDbCommand . Este artigo descreve como usar um segundo OleDbCommand para recuperar o valor da coluna de
identidade.

Observação:Este recurso só funciona com bancos de dados Microsoft Jet OLEDB 4.0. As versões anteriores do Microsoft Jet OLEDB não suportam
esse recurso.

Mais Informações

Conectar ao banco de dados do Access


Para se conectar ao banco de dados do Access e crie uma tabela com a coluna de identidade, siga estas etapas:

1. Inicie o Microsoft Visual Studio .NET 2002.


2. No menu arquivo , aponte para novoe clique em projeto.
3. Em Project Types, clique em Projetos de Visual Basic. Na seção modelos , clique em Aplicativo de Console. Por padrão, Module1. vb é
criado.
4. Nomeie o projeto MyJetApplication e clique em OK.
5. Substitua o código existente com o seguinte código:
Imports System Imports System.Data Imports System.Data.OleDb Module Module1 Sub Main() ' Open Connection Dim
cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=YourAccessDatabase") cnJetDB.Open() ' If the test table does not exist, create the Table. Dim strSQL
As String strSQL = "CREATE TABLE AutoIncrementTest " & _ "(ID int identity, Description varchar(40), " & _
"CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))" ' Command for creating Table. Dim cmdJetDB As
New OleDbCommand(strSQL, cnJetDB) cmdJetDB.ExecuteNonQuery() ' Create a DataAdaptor With Insert Command For
inserting records Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB) ' Command to
Insert Records. Dim cmdInsert As New OleDbCommand() cmdInsert.CommandText = "INSERT INTO AutoIncrementTest
(Description) VALUES (?)" cmdInsert.Connection = cnJetDB cmdInsert.Parameters.Add(New
OleDbParameter("Description", OleDbType.VarChar, 40, "Description")) oleDa.InsertCommand = cmdInsert '
Create a DataTable Dim dtTest As New DataTable() oleDa.Fill(dtTest) Dim drTest As DataRow ' Add Rows to the
Table drTest = dtTest.NewRow drTest("Description") = "This is a Test Row 1" dtTest.Rows.Add(drTest) drTest =
dtTest.NewRow drTest("Description") = "This is a Test Row 2" dtTest.Rows.Add(drTest) End Sub End Module

6. Modifique o nome de fonte de dados na seqüência de conexão para apontar para o banco de dados do Access.

O valor da coluna de identidade de trapping


Para resumir as etapas no evento RowUpdated do DataAdapter, você pode capturar o valor de coluna de identidade que é gerado para uma
coluna de uma tabela em um banco de dados. No evento RowUpdated , você executará a consulta Selecione @@IDENTITY usando outro objeto
de comando e, em seguida, atribuir o valor retornado pela consulta para a coluna de identidade. Por fim, chame o método AcceptChanges do
objeto DataRow para aceitar o valor da coluna.

O desvio do valor da coluna de identidade, siga estas etapas:

1. Adicione o seguinte código antes do método Main para criar um segundo objeto OleDbCommand para a consulta Selecione
@@IDENTITY ::
' Create OleDbCommand for SELECT @@IDENTITY statement Private cmdGetIdentity As OleDbCommand

Você também pode gostar