我剛剛開始自學與vb.net數據庫訪問和我一直在使用this as a reference。我的MS Access數據庫比我參考設置關係數據庫後的示例稍微複雜一些。我有兩張桌子;球員和村莊。每個玩家都可以擁有一個更加多的村莊(1對多的關係),這種關係是在球員表中的唯一密鑰,並在村表用於定義村的所有者玩家ID之間的捆綁。以下是我如何向數據庫添加新玩家的方法;麻煩與MS訪問自動編號字段和VB.net
Public Sub NewPlayer(ByVal playerName As String)
Dim playerID As Integer = getLastIdent("Players") + 1
Dim tmpnum As Integer = playerID
Dim dsNewRow As DataRow
Dim Sql As String
Sql = "SELECT * FROM Players"
da = New OleDb.OleDbDataAdapter(Sql, con)
da.Fill(ds, "Players")
Dim cb As New OleDb.OleDbCommandBuilder(da)
dsNewRow = ds.Tables("Players").NewRow()
dsNewRow.Item("ID") = playerID
dsNewRow.Item("NameP") = playerName
dsNewRow.Item("Coins") = 0
ds.Tables("Players").Rows.Add(dsNewRow)
da.Update(ds, "Players")
Call NewVillage(playerName, playerID)
End Sub
的getLastIdent子程序是我在尋找的玩家ID領域使用的最後一個值的嘗試;
Public Function getLastIdent(ByVal tblname As String)
Dim sql As String = "SELECT @@IDENTITY FROM " & tblname
Dim cmd As New OleDb.OleDbCommand(Sql, con)
Return cmd.ExecuteScalar()
End Function
但是這根本不起作用(無論如何返回0)。球員們實際上可以順利創建(不正確的ID號,似乎在某些點與數據庫中正確遞增自動編號來修復自身然而到村分配給新的球員,我跑NewVillage;
Public Sub NewVillage(ByVal playerName As String, ByVal playerID As Integer)
Dim numVils As Integer = getVilCount()
Dim xpos As Integer
Dim ypos As Integer
xpos = CInt(Rnd()*50)
ypos = CInt(Rnd()*50)
Dim dsNewRow As DataRow
Dim Sql As String
Sql = "SELECT * FROM Villages"
da = New OleDb.OleDbDataAdapter(Sql, con)
da.Fill(ds, "Villages")
Dim cb As New OleDb.OleDbCommandBuilder(da)
dsNewRow = ds.Tables("Villages").NewRow()
dsNewRow.Item("ID") = numVils + 1
dsNewRow.Item("NameV") = playerName & "'s Village"
dsNewRow.Item("Xpos") = xpos
dsNewRow.Item("Ypos") = xpos
dsNewRow.Item("Owner") = playerID
ds.Tables("Villages").Rows.Add(dsNewRow)
da.Update(ds, "Villages")
End Sub
這這裏是整個事情的崩潰,這是傳遞給子程序的playerID是不是與我剛創建的播放器相關聯的正確值(在臉上沒有叫這個名字的任何球員,因爲它總是試圖playerID = 1自動編號,由於刪除失敗的行開始高於)。
所以,我怎麼能去哪裏弄個從球員表中的ID的真實價值?是否有一些電話,我可以作出這樣的FORC es AutoNumber更新,然後我可以重新檢查它?
的[選擇可能的複製@ @IDENTITY WHERE在Access](http://stackoverflow.com/question S/34269518 /選擇,身份,其中,在接入) – topshot
您插入新的球員沒有ID。然後找到新的ID是什麼。然後用這個ID調用NewVillage。 – topshot