【问题标题】:Identity of recently added record and insert from gridview?最近添加的记录的标识并从gridview插入?
【发布时间】:2012-06-24 16:53:53
【问题描述】:

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

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

下面的代码将数据插入到一个表中,并通过内置函数@@IdentitytrainingTbl 表中插入最近添加的记录id (tt_id),并将该记录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 (GridView1) 的 UserId 记录与来自@@Identity 的循环 id 一起插入到userAssessmentTbl 表中。

这部分插入参数好像不对:

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

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

我也试过这样:

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

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

问题略有改变,如何在 DataType 为 Uniqueidentifier 的 SQL DB 中插入字符串?

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    首先:

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


    其次,回答您的问题:

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

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

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

    【讨论】:

    • 感谢您的回答的第一部分很棒,第二部分帮助了我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2018-04-23
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2016-07-01
    相关资源
    最近更新 更多