JAK: Načtení hodnoty Identity při vkládání záznamů do databáze aplikace Access pomocí programu Visual Basic.NET

Překlady článku Překlady článku
ID článku: 815629 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje, jak lze získat hodnotu sloupce identity z databáze aplikace Access.

Načítání Hodnoty identity z databáze Jet se liší od serveru SQL Server protože databáze stroje Jet, nepodporuje s dávkové příkazy. Jet Podporuje zprostředkovatel OLE DB verze 4.0 SELECT @@ Identity dotaz, který umožňuje načíst hodnotu Automatický přírůstek pole generovaný připojení. Spustit SELECT @@ Identity dotaz, je doporučeno použít jiné OleDbCommand objekt. Tento článek popisuje, jak použít druhý OleDbCommand načíst hodnotu sloupce Identity.

Poznámka: Tato funkce pracuje pouze s databází Microsoft Jet OLEDB 4.0. V dřívějších verzích Microsoft Jet OLEDB nepodporují tuto funkce.

Další informace

Připojení k databázi aplikace Access

Připojení k databázi aplikace Access a vytvořit tabulku s Sloupec identity, postupujte takto:
  1. Spusťte aplikaci Visual Studio.NET 2002.
  2. V Soubor příkazNovýa klepněte na tlačítko Projekt.
  3. Ve skupinovém rámečku Typy projektů, klepněte na tlačítko Vizuální Základní projekty. Ve skupinovém rámečku Šablony Klepněte na položkuAplikace konzoly. Ve výchozím nastavení je Module1.vb vytvořen.
  4. Název projektu MyJetApplication a potom klepněte na tlačítko OK.
  5. Nahraďte existující kód následující kód:
    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. Změnit název zdroje dat do připojovacího řetězce přejděte do databáze aplikace Access.




Soutisk na hodnotu sloupce Identity

Shrnout takto, v RowUpdated metody Update událostní vlastnost DataAdapter, můžete provést soutisk na hodnotu sloupce identity která je vytvořena ve sloupci tabulky v databázi aplikace Access. V RowUpdated metody Update událost, bude spuštěna SELECT @@ IDENTITY dotaz pomocí jiného Příkaz objekt a potom přiřadí hodnotu vrácenou dotaz na sloupec Identity. Konečně, zavolejte AcceptChanges Metoda Objekt DataRow objekt přijmout hodnotu sloupce.

Pasti sloupec identity hodnotu, postupujte takto:
  1. Přidejte následující kód před Hlavní Metoda vytvořit druhý OleDbCommand objekt pro SELECT @@ IDENTITY Dotaz:
       ' Create OleDbCommand for SELECT @@IDENTITY statement
       Private cmdGetIdentity As OleDbCommand
  2. Následující kód, který chcete přidat Hlavní způsob vytvoření nové instance OleDbCommand Třída:
          ' Create another command to get IDENTITY value.
          cmdGetIdentity = New OleDbCommand()
          cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
          cmdGetIdentity.Connection = cnJetDB
    
    
  3. Následující kód, který chcete přidat Hlavní Metoda pro manipulaci RowUpdated metody Update událost:
          ' Delegate for handling RowUpdated event.
          AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. Následující kód, který chcete přidat Hlavní způsob aktualizace dat. Na RowUpdated metody Update událost je aktivována po volání Aktualizace Metoda.
          ' Update the Data
          oleDa.Update(dtTest)
    
  5. Následující kód, který chcete přidat Hlavní Metoda přetažení AutoIncrementTest Tabulka a uvolnit prostředky:
          ' Drop the table
          cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"
          cmdJetDB.ExecuteNonQuery()
    
          ' Release the resources.
          cmdGetIdentity.Dispose()
          cmdGetIdentity = Nothing
          cmdInsert.Dispose()
          cmdInsert = Nothing
          cmdJetDB.Dispose()
          cmdJetDB = Nothing
          cnJetDB.Close()
          cnJetDB.Dispose()
          cnJetDB = Nothing
  6. Přidejte následující RowUpdated metody Update kód obslužnou rutinu události pro modul 1:
       ' Event handler for RowUpdated event.
       Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)
          If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then
             ' Get the Identity column value
             e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())
             Debug.WriteLine(e.Row("ID"))
             e.Row.AcceptChanges()
          End If
       End Sub
    
  7. V Ladění nabídky, klepněte na tlačítkoSpustit Spusťte aplikaci. Jsou hodnoty sloupce identity Zobrazí se v okně výstupu.


Úplný výpis kódu

Imports System
Imports System.Data
Imports System.Data.OleDb

Module Module1

   ' Create OleDbCommand for SELECT @@IDENTITY statement
   Private cmdGetIdentity As OleDbCommand

   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 then 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)

      ' Create another Command to get IDENTITY Value
      cmdGetIdentity = New OleDbCommand()
      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
      cmdGetIdentity.Connection = cnJetDB

      ' Delegate for Handling RowUpdated event
      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated

      ' Update the Data
      oleDa.Update(dtTest)

      ' Drop the table
      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"
      cmdJetDB.ExecuteNonQuery()

      ' Release the Resources
      cmdGetIdentity.Dispose()
      cmdGetIdentity = Nothing
      cmdInsert.Dispose()
      cmdInsert = Nothing
      cmdJetDB.Dispose()
      cmdJetDB = Nothing
      cnJetDB.Close()
      cnJetDB.Dispose()
      cnJetDB = Nothing
   End Sub

   ' Event Handler for RowUpdated Event
   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)
      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then
         ' Get the Identity column value
         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())
         Debug.WriteLine(e.Row("ID"))
         e.Row.AcceptChanges()
      End If
   End Sub
End Module

Odkazy

Další informace týkající Příbuzné téma v jazyce Visual Basic 6.0 klepněte následujícím článku znalostní báze v článku znalostní báze Microsoft Knowledge Base:
232144INFO: Jet OLE DB Provider verze 4.0 Vyberte podporuje @@ Identity
Další informace naleznete na následujícím webu MSDN Server:
Událost OleDbDataAdapter.RowUpdated
http://msdn2.microsoft.com/en-us/library/System.data.OLEDB.OleDbDataAdapter.RowUpdated (vs.71) .aspx

Vlastnosti

ID článku: 815629 - Poslední aktualizace: 20. května 2011 - Revize: 5.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Klíčová slova: 
kbjet kbprogramming kbtsql kbsystemdata kbhowtomaster kbmt KB815629 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:815629

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com