所以我得到的确切错误消息是:
INSERT 语句与 FOREIGN KEY 约束“FK_featuredtype_featured”冲突。冲突发生在数据库“docphin”、表“dbo.featured”、列“featuredID”中。该语句已终止。”
我调用具有插入语句的 sp 的 vb 代码部分是:
If isChanged1.Checked Then
lq.admin_RemoveFeatured(isChanged.featuredID1)
lq.admin_AddFeatured(title1.Text, text1.Text, imageURL1.Text, login1.Checked, index1.Checked, mobile1.Checked, Integer.Parse(priority1.Text))
End If
If isChanged2.Checked Then
lq.admin_RemoveFeatured(isChanged.featuredID2)
lq.admin_AddFeatured(title2.Text, text2.Text, imageURL2.Text, login2.Checked, index2.Checked, mobile2.Checked, Integer.Parse(priority2.Text))
End If
现在奇怪的是,当我在 sql server 中执行 admin_AddFeatured 时它工作正常。
admin_Remove精选:
CREATE PROCEDURE [dbo].[admin_RemoveFeatured]
-- Add the parameters for the stored procedure here
@featuredID int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
delete from featuredtype where featuredID= @featuredID
delete from featured where featuredID= @featuredID
END
GO
admin_Add精选:
CREATE PROCEDURE [dbo].[admin_AddFeatured]
-- Add the parameters for the stored procedure here
@title varchar(500) ,
@text varchar(MAX),
@imageURL varchar(200),
@loginPage bit,
@indexPage bit,
@mobilePage bit,
@priority int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into featured
(title,text,imageURL, priority )
values
(@title,@text,@imageURL, @priority)
insert into featuredtype
(loginPage, indexPage, mobilePage)
values
(@loginPage, @indexPage, @mobilePage)
END
GO
我一直在测试不同的解决方案,但我似乎无法理解这里可能出了什么问题。我唯一的想法是 ic 可能与我如何获取我插入删除的每个“功能”项目的 ID 字段有关。为此,我制作了一个模块:
Public Module isChanged
Public featuredID1 As Integer
Public featuredID2 As Integer
Public featuredID3 As Integer
Public featuredID4 As Integer
Public featuredID5 As Integer
Public featuredID6 As Integer
End Module
然后,在页面加载 sub 中,我使用 sp 并读取 ID,例如:
Dim lq2 As New lqDFDataContext
Dim var = lq2.admin_GetFeatured().ToList()
Dim i As Integer = 1
For Each f In var
If i = 1 Then
isChanged.featuredID1 = f.featuredID
title1.Text = f.title
text1.Text = f.text
imageURL1.Text = f.imageURL
login1.Checked = f.loginPage
index1.Checked = f.indexPage
mobile1.Checked = f.mobilePage
priority1.Text = Str(f.priority)
End If
etc...