Sql INSERT语句与外键约束冲突

Sql INSERT语句与外键约束冲突,sql,database,vb.net,foreign-keys,Sql,Database,Vb.net,Foreign Keys,错误是: INSERT语句与FOREING键约束“FK\u tblBook\u tblCategory”冲突。这个 数据库“CIEDC”、表“dbo.tblCategory”、列“CatID”中发生冲突。 声明已终止 这是因为我的数据库的关系吗 如何解决此问题?看来txtcontegory.ValueMember的值与数据库中的有效类别ID不对应。我认为有两种情况: 1. 在表dbo.tblBook中,它有一列名为CatID充当dbo.tblCategory表的外键引用。似乎您正在尝试使用尚未创

错误是:

INSERT语句与FOREING键约束“FK\u tblBook\u tblCategory”冲突。这个 数据库“CIEDC”、表“dbo.tblCategory”、列“CatID”中发生冲突。 声明已终止

这是因为我的数据库的关系吗


如何解决此问题?

看来
txtcontegory.ValueMember
的值与数据库中的有效类别ID不对应。

我认为有两种情况: 1. 在表dbo.tblBook中,它有一列名为CatID充当dbo.tblCategory表的外键引用。似乎您正在尝试使用尚未创建的CatID属性。如果是,请返回并首先创建CatID

2. 可能有多个外键与表相关。 如果您使用的是sql server,那么下面的sql语句将帮助您找到所有的sql语句,请检查并删除剩余的sql语句,祝您好运

myCommand = New SqlCommand(
"INSERT INTO tblBook(BookCode, BookTitle, Author, PublishingYear, 
                     Price, EnterDate, CatID, RackID, Amount) 
VALUES('" & txtBookCode.Text & "','" & 
            txtTitle.Text & "','" & 
            txtAuthor.Text & "','" & 
            txtPublishYear.Text & "','" & 
            txtPrice.Text & "', #" & 
            txtEnterDate.Text & "#, " & 
            txtCategory.ValueMember & "," & 
            txtRack.ValueMember & "," & 
            txtAmount.Text & ")"
, myConnection)
使用;
去
挑选
f、 名称为外键名称
,对象名称(f.parent\u OBJECT\u id)作为表名称
,列名称(fc.parent\u object\u id,fc.parent\u column\u id)作为约束列名称
,对象名称(f.引用对象id)作为引用对象
,列名称(fc.引用的对象id,fc.引用的列id)作为引用的列名称
,是否已禁用
,删除参考动作描述
,更新参考动作描述
来自sys.foreign_键作为f
内部连接sys.foreign\u key\u列作为fc
在f.object\u id=fc.constraint\u object\u id上
--其中f.parent_object_id=object_id('HumanResources.Employee');
去
挑选
f、 名称为外键名称
,对象名称(f.parent\u OBJECT\u id)作为表名称
,列名称(fc.parent\u object\u id,fc.parent\u column\u id)作为约束列名称
,对象名称(f.引用对象id)作为引用对象
,列名称(fc.引用的对象id,fc.引用的列id)作为引用的列名称
,是否已禁用
,删除参考动作描述
,更新参考动作描述
来自sys.foreign_键作为f
内部连接sys.foreign\u key\u列作为fc
在f.object\u id=fc.constraint\u object\u id上
--其中f.parent_object_id=object_id('HumanResources.Employee');

是的,你是对的!这是因为sql关系,如果可能,请发布有关表的信息,我可以提供更具体的帮助。请开始使用参数,例如@BookTitle,而不是“&txtTitle.Text&”。任何带有单引号的书名都会导致插入失败,并避免SQL注入。它的CREATE TABLE[dbo].[tblCategory]([CatID][int]IDENTITY(1,1)NOT NULL、[RackID][int]NOT NULL、[CategoryName][varchar](50)NULL,约束[PK tblCategory]主键群集([CatID]ASC)
    USE <database_name>;  
GO  
SELECT   
    f.name AS foreign_key_name  
   ,OBJECT_NAME(f.parent_object_id) AS table_name  
   ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name  
   ,OBJECT_NAME (f.referenced_object_id) AS referenced_object  
   ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name  
   ,is_disabled  
   ,delete_referential_action_desc  
   ,update_referential_action_desc  
FROM sys.foreign_keys AS f  
INNER JOIN sys.foreign_key_columns AS fc   
   ON f.object_id = fc.constraint_object_id   
--WHERE f.parent_object_id = OBJECT_ID('HumanResources.Employee'); 
GO 
SELECT 
f.name AS foreign_key_name 
,OBJECT_NAME(f.parent_object_id) AS table_name 
,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name 
,OBJECT_NAME (f.referenced_object_id) AS referenced_object 
,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name 
,is_disabled 
,delete_referential_action_desc 
,update_referential_action_desc 
FROM sys.foreign_keys AS f 
INNER JOIN sys.foreign_key_columns AS fc 
ON f.object_id = fc.constraint_object_id 
--WHERE f.parent_object_id = OBJECT_ID('HumanResources.Employee');