如何将服务器自动生成的值存储到主键列

时间:2018-08-08 13:25:48

标签: sql sql-server vb.net oledb

我正在使用SQL Server数据库的应用程序上工作。我自动生成的主键值将存储到数据集中。我正在使用下面的代码。但是问题是我的主键列,即 ProdNum 是只读的。为此,将不允许设置该值。我该如何克服?


Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As Data.OleDb.OleDbRowUpdatedEventArgs)
        ' Include a variable and a command to retrieve the identity value from the Access database.
        Dim newID As Integer = 0
        Dim idCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT @@IDENTITY", args.Command.Connection(), args.Command.Transaction)
        If args.StatementType = StatementType.Insert Then
            ' Retrieve the identity value and store it in the ProductIDNum column.
            newID = CInt(idCMD.ExecuteScalar())
            ' place in the identity column of the local table in the dataset
            'args.Row("ProdNum") = newID
        End If
    End Sub

1 个答案:

答案 0 :(得分:0)

我不确定是否可以使用OleDb来完成此操作(您不能使用Access,但这是一个不同的OLE DB提供程序),但是如果您使用SqlClient,则无需处理任何事件,因为您只需将SELECT附加到适配器INSERT的{​​{1}}中的CommandText上即可,例如

InsertCommand

这一直对我有用。