Rubrik: Datenbanken · ADO.NET Allgemein | VB-Versionen: VB2005 - VB2015 | 01.12.15 |
Autowert eines mit INSERT INTO hinzugefügten Datensatzes ermitteln (ADO.NET) Diese Funktion gibt den Autowert des zuletzt hinzugefügten Datensatzes zurück. | ||
Autor: Dieter Otter | Bewertung: | Views: 8.858 |
www.tools4vb.de | System: WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Beim Arbeiten mit Datenbanken und Tabellen stößt man immer wieder auf folgende Thematik: Wie lässt sich der Autowert eines Datensatzs (bspw. ID) unmittelbar nach dem Hinzufügen eines neuen Datensatz ermitteln?
Eine Möglichkeit ist die Abfrage "SELECT @@IDENTITY" auszuführen.
Beispiel:
' DB-Verbindung herstellen und öffnen Dim Conn As OleDb.OleDbConnection Conn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...") Conn.Open()
' neuen Datensatz via INSERT INTO hinzufügen Dim SQL As String = "INSERT INTO (Feld1,Feld) VALUES (?, ?)" Using cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQL, Conn) cmd.Parameters.AddWithValue("Feld1", "Wert1") cmd.Parameters.AddWithValue("Feld2", "Wert2") cmd.ExecuteNonQuery() End Using
''' <summary> ''' Ermittelt den Autowert des zuletzt hinzugefügten Datensatzes ''' </summary> ''' <param name="Conn">OleDb-Connection Objekt</param> ''' <returns>Autowert</returns> Public Function GetAutoID(ByVal Conn As OleDb.OleDbConnection) As Integer Dim SQL As String = "SELECT @@IDENTITY" Using cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQL, Conn) Dim dr As OleDb.OleDbDataReader = cmd.ExecuteScalar() If dr.Read() Then Return dr.GetValue(0) End If End Using End Function