У меня есть следующий код для подпрограммы. Он вставляет строку в базу данных MSAccess, используя данные, содержащиеся в содержащейся форме. То, что я хотел бы сделать, это захватить идентификационный номер этой добавленной записи, чтобы он мог быть установлен для свойства окна, которое вызывается при успешном добавлении. Я пробовал это посмотреть, но я получил что-то около @@IDENTITY
, но он использует совершенно другой способ подключения.Извлечение последнего вставленного ID из базы данных MS Access
Private Sub CreateTournament_Click(sender As System.Object, e As System.EventArgs) Handles CreateTournament.Click
' TODO: Check the form for errors, or blank values.
' Create the tournament in the database, add the values where needed. Close the form when done.
Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Dim icount As Integer
Dim str As String
Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Master.mdb'")
cn.Open()
str = "insert into Tournaments (SanctioningID,TournamentName,TournamentVenue,TournamentDateTime,TournamentFirstTable,Game,Format,OrganizerID) values(" _
& CInt(SanctioningIDTxt.Text) & ",'" & Trim(TournamentNameTxt.Text) & "','" & _
"1" & "','" & EventDateTimePck.Value & "','" & TableFirstNumberNo.Value & "','" & GameList.SelectedIndex & "','" & FormatList.SelectedIndex & "','" & Convert.ToInt32(ToIDTxt.Text) & "')"
'string stores the command and CInt is used to convert number to string
cmd = New OleDbCommand(Str, cn)
icount = cmd.ExecuteNonQuery
MessageBox.Show(icount)
'displays number of records inserted
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
Me.Close()
Dim n As New TournamentWindow ' Open a new Tournament window if everything is successful
n.TournID = Counter '<< This should be set to the ID of the most recently inserted row
n.Show(HomeForm)'Invoke the form and assign "HomeForm" as it's parent.
End Sub
Это не так. В случае, если у кого-то нет санкционирующего номера, по умолчанию оно равно -1. Таким образом, может быть несколько значений -1. Вопрос о @@ IDENTITY, Не то, чтобы это могло произойти, но что, если кто-то еще должен был добавить запись, будет ли она давать последний или тот, который я вставил? –
Это даст вам самое последнее. –
Угадай, что мне нужно будет убедиться, что база данных заблокирована и используется только одним экземпляром программы. Благодарю. –