我正在开发一个ASP.Net VB Web应用程序
该应用程序包含一个GridView
,它显示来自我创建的数据的用户表的记录。该数据库是一个Sql server数据库。
下面的代码将数据插入到一个表中,并通过内置函数@@Identity
从tt_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
我遇到的问题似乎集中在如何将uniqueidenifier
从GridView
插入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?
任何帮助都将非常感激。
答案 0 :(得分:1)
首先:
@@IDENTITY
returns the most recently为您当前创建了身份 连接,不一定是最近添加的行的标识 一张桌子。 始终使用SCOPE_IDENTITY()
返回的身份 最近添加了行。
其次,请回答您的问题:
SQL类型Uniqueidentifier
和CLR类型Guid
匹配。
因此,您不需要将"@UserId"
作为参数传递,而是需要从字符串值中创建Guid
。
Dim userID As Guid = New Guid(lblUsr2.UniqueID.ToString)