最近添加的记录和从gridview插入的标识?

时间:2012-06-24 16:53:53

标签: asp.net vb.net gridview insert datatable

我正在开发一个ASP.Net VB Web应用程序

该应用程序包含一个GridView,它显示来自我创建的数据的用户表的记录。该数据库是一个Sql server数据库。

下面的代码将数据插入到一个表中,并通过内置函数@@Identitytt_id表中插入最近添加的记录ID(trainingTbl)并插入该记录ID进入userAssessmentTbl。将标识添加到第二个userAssessmentTbl表可以正常工作。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lblUsr2 As Control = FindControlRecursive(MultiTabs, "txtUsr")
        Dim strQuery As String
        Dim cmd As SqlCommand

        strQuery = "Insert into trainingTbl(s_id, t_date, EditorId, wa_id, st_id) values(@s_id , @t_date, @EditorId, @wa_id, @st_id  ) Insert into userAssessmentTbl(tt_id, UserId) values(@@Identity, @UserId)"

        cmd = New SqlCommand(strQuery)

        cmd.Parameters.AddWithValue("@s_id", DDLCourse.Text)
        cmd.Parameters.AddWithValue("@t_date", Convert.ToDateTime(txtDate.Text))
        cmd.Parameters.AddWithValue("@EditorId", User.Identity.Name.ToString())
        cmd.Parameters.AddWithValue("@st_id", myLblStation.Value().ToString)
        cmd.Parameters.AddWithValue("@wa_id", myLblWatch.Value().ToString)
        cmd.Parameters.AddWithValue("@UserId", lblUsr2.UniqueID.ToString)
        InsertUpdateData(cmd)
    End Sub

我遇到的问题似乎集中在如何将uniqueidenifierGridView插入userAssessmentTbl数据库!

以及如何使用循环我可以将Gridview中的UserId记录(GridView1)与userAssessmentTbl中的循环id一起插入@@Identity表。

这部分插入参数似乎不正确:

cmd.Parameters.AddWithValue("@UserId", lblUsr2.UniqueID().ToString)

我遇到的错误是:'从字符串转换为uniqueidentifier时转换失败。'

我也尝试过这样:

cmd.Parameters.AddWithValue("@UserId", SqlDbType.UniqueIdentifier).Value().ToString()

我遇到了错误:'操作数类型冲突:int与uniqueidentifier'

不兼容

问题略有改变,如何将字符串插入SQL DB,其中DataType是Uniqueidentifier?

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

首先:

  

@@IDENTITY returns the most recently为您当前创建了身份   连接,不一定是最近添加的行的标识   一张桌子。 始终使用 SCOPE_IDENTITY() 返回的身份   最近添加了行。


其次,请回答您的问题:

SQL类型Uniqueidentifier和CLR类型Guid匹配。

因此,您不需要将"@UserId"作为参数传递,而是需要从字符串值中创建Guid

Dim userID As Guid = New Guid(lblUsr2.UniqueID.ToString)