Wenn man den neuen Wert einer Schlüsselspalte nach dem Einfügen erhlten möchte, bietet sich der SQL-Befehl @@Identity an.
Als Beispiel wird einen Verbindung zu einer Access-Datenbank genutzt:
Hier klicken für weitere Informationen
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
Imports System.Data.OleDb
Public Class frmTest
.....
Private Function SpeichernMitNeuemWert() as int64
Dim MeinSqlConnection As OleDbConnection = New OleDbConnection(My.Settings.DBConnectionString)
'Speichern
Dim MeinSqlString As String = "INSERT INTO Tabelle(Feld1,Feld2, ....) VALUES (Wert1,Wert2,....)"
Dim MeinSqlCommand As OleDbCommand = New OleDbCommand(MeinSqlString, MeinSqlConnection)
MeinSqlConnection.Open()
Try
MeinSqlCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
'ID-Wert auslesen
MeinSqlString = "Select @@Identity From tTest"
MeinSqlCommand.CommandText = MeinSqlString
Try
Wert = MeinSqlCommand.ExecuteScalar
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
MeinSqlConnection.Close()
Return Wert
End Function
.....
End Class
|
Falls ein anderer Datenbanktyp verwendet werden soll, muss die DLL, die den Zugriff auf die Datenbank steuert ausgetauscht werden.
Dazu muss dann überall im Code OleDB durch die entspechende Information ersetzt werden.
z.B. für den Zugriff auf MS SQL-Server bzw. MS SQL.ServerExpress OleDB durch SQL
Hier klicken für weitere Informationen
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
Imports System.Data.SQLClient
Public Class frmTest
.....
Private Function SpeichernMitNeuemWert() As Int64
Dim MeinSqlConnection As SQLConnection = New SQLConnection(My.Settings.DBConnectionString)
'Speichern
Dim MeinSqlString As String = "INSERT INTO Tabelle(Feld1,Feld2, ....) VALUES (Wert1,Wert2,....)"
Dim MeinSqlCommand As SQLCommand = New SQLCommand(MeinSqlString, MeinSqlConnection)
MeinSqlConnection.Open()
Try
MeinSqlCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
'ID-Wert auslesen
MeinSqlString = "Select @@Identity From tTest"
MeinSqlCommand.CommandText = MeinSqlString
Try
Wert = MeinSqlCommand.ExecuteScalar
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
MeinSqlConnection.Close()
Return Wert
End Function
.....
End Class
|