我使用下面的代码插入记录我没有插入“Id”,因为它被设置为自动增量网络。无论如何,我希望在插入后获得为该记录分配的id。你能救我吗?我尝试使用executecalar如下,但它无法正常工作。感谢。
Public Function Add() As Integer
Dim rowId As Integer
Dim strcon = New AppSettingsReader().GetValue("ConnectionString", GetType(System.String)).ToString()
Using con As New SqlConnection(strcon)
Using cmd As New SqlCommand("INSERT INTO tbProjekt (Nazwa, Autor, Datautworzenia, Visible) VALUES (@Nazwa, @Autor, @Datautworzenia, @Visible)", con)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@Nazwa", Nazwa)
cmd.Parameters.AddWithValue("@Autor", Autor)
cmd.Parameters.AddWithValue("@DataUtworzenia", DataUtworzenia)
cmd.Parameters.AddWithValue("@Visible", Visible)
con.Open()
rowId = Convert.ToInt32(cmd.ExecuteScalar())
con.Close()
End Using
End Using
Return rowId
End Function
答案 0 :(得分:1)
使用SCOPE_IDENTITY()
替换此行
Using cmd As New SqlCommand("INSERT INTO tbProjekt (Nazwa, Autor, Datautworzenia, Visible) VALUES (@Nazwa, @Autor, @Datautworzenia, @Visible)", con)
使用此行
Using cmd As New SqlCommand("INSERT INTO tbProjekt (Nazwa, Autor, Datautworzenia, Visible) VALUES (@Nazwa, @Autor, @Datautworzenia, @Visible); SELECT NEWID = SCOPE_IDENTITY()", con)
你也可以改变这个
rowId = Convert.ToInt32(cmd.ExecuteScalar())
到此
rowId = cmd.ExecuteScalar()