gpt4 book ai didi

asp.net - 如何将最后插入的 id(PK) 的值存储到主键是 VB.Net 中的 GUID 的变量中

转载 作者:行者123 更新时间:2023-12-02 17:35:34 24 4
gpt4 key购买 nike

我的问题与此处提出的问题相关How to get last inserted id?

但是,scope_identity() 对我不起作用,因为在我的例子中,表的主键值是 GUID 值。

我也在这里看到了这个问题 SQL Server - Return value after INSERT

但该链接没有解释如何将值存储在变量中。我需要将值存储在一个变量中,我可以使用该变量进行多次输入。

我正在将硬编码值插入到多个 SQL Server 表中。所有主键列都是 GUID。

表结构如下。

enter image description here

这是我用来将数据插入调查表的代码。

 Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

Dim survey = Guid.NewGuid().ToString()

Dim SurveyTitle As String = "Diversity Monitoring Survey"
Dim SurveyDetail As String = ""

Core.DB.DoQuery("insert into survey(id,title, detail,employerid,userid) values(@id,@title, @detail, @eid, @uid);", Core.DB.SIP("title", SurveyTitle), Core.DB.SIP("detail", SurveyDetail), Core.DB.SIP("eid", LocalHelper.UserEmployerID()), Core.DB.SIP("uid", LocalHelper.UserID()), Core.DB.SIP("id", survey))

End Sub

DoQuery 在哪里

Shared Sub DoQuery(ByVal commandText As String, ByVal ParamArray params As SqlParameter())
Dim conn As SqlConnection = Nothing

Try
conn = GetOpenSqlConnection()
DoQuery(conn, commandText, params)
Finally
If conn IsNot Nothing Then conn.Dispose()
End Try
End Sub

现在我想检索刚刚插入的 SurveyId 值并将其存储到变量 strSurveyId

    Dim strSurveyID As String 

这样我就可以在表中插入该值SurveyQuestionCategory:

    Core.DB.DoQuery("insert into surveyquestioncategory(title, detail, surveyid) values(@title, @detail, @sid)", Core.DB.SIP("title", strSurveyQuestionCategoryTitle), Core.DB.SIP("detail", strSurveyQuestionCategoryDetail), Core.DB.SIP("sid", strSurveyID))

scope_identity() 在我的情况下不起作用,因为它是 GUID。

我已经尝试过了

        SELECT * from [MPBlLiteDev].[dbo].[Survey] where id=SCOPE_IDENTITY()

但是它给了我一个错误操作数类型冲突:uniqueidentifier 与数字不兼容

请用代码建议。

最佳答案

请执行以下存储过程

Create proc SPInsertSurvey
(
@Title varchar(MAX),
@OutSurveyID UNIQUEIDENTIFIER output
)
as
DECLARE @Table TABLE (SurveyID UNIQUEIDENTIFIER)
begin

insert into survey(Title)
Output inserted.SurveyID into @Table values (@Title)

set @OutSurveyID =(select SurveyID from @Table)

end

您可以使用以下语法来执行它

DECLARE @return_value int,
@OutSurveyID uniqueidentifier

EXEC @return_value = [dbo].[SPInsertSurvey]
@Title = N'''S1''',
@OutSurveyID = @OutSurveyID OUTPUT

SELECT @OutSurveyID as N'@OutSurveyID'

SELECT 'Return Value' = @return_value

希望这会有所帮助

关于asp.net - 如何将最后插入的 id(PK) 的值存储到主键是 VB.Net 中的 GUID 的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com