标签:c sql-server
我在调试过程中仍然遇到此错误.我不确定该怎么做,因为我为Person klass添加了AdddressID.
请帮忙!
The INSERT statement conflicted with the FOREIGN KEY constraint \”FK_Person_ToAddress\”. The conflict occurred in database \”DirectoryDatabase\”, table \”dbo.Address\”, column ‘AddressID’
引发此错误的函数是:
public void CreatePersonDB(ref Person person)
{
string CreatePerson =
@"INSERT INTO [Person] (FirstName, MiddleName, LastName, AddressID)
OUTPUT INSERTED.PersonID
VALUES (@FName, @MName, @LName, @AID)";
using (SqlCommand cmd = new SqlCommand(CreatePerson, OpenConnection))
{
// Get your parameters ready
cmd.Parameters.AddWithValue("@FName", person.FirstName);
cmd.Parameters.AddWithValue("@MName", person.MiddleName);
cmd.Parameters.AddWithValue("@LName", person.LastName);
cmd.Parameters.AddWithValue("@AID", person.PrimaryAddress.AddressID);
try
{
person.PersonID = (int)cmd.ExecuteScalar(); //Returns the identity of the new tuple/record}
}
catch
{
Console.WriteLine("Adresse ID doesn't exist, do you want to add it? [y/n]");
ConsoleKeyInfo input = Console.ReadKey();
if (input.Key == ConsoleKey.Y)
{
//create an insert query to the dbo.Adresse the same way you did with the dbo.person.
CreateAddressDB();
}
}
}
Person&的数据库sql代码地址看起来像这样(编辑后):
CREATE TABLE Address (
AddressID BIGINT IDENTITY(1,1) NOT NULL,
StreetName NVARCHAR(MAX) NOT NULL,
HouseNumber NVARCHAR(MAX) NOT NULL,
CityID BIGINT NOT NULL,
[PersonID] NCHAR(10)NOT NULL,
[PrimaryAddress] INT NOT NULL,
CONSTRAINT pk_Address主键群集(AddressID),
CONSTRAINT fk_Address外键(CityID)
参考城市(CityID)
不删除任何动作
无需更新时)
这用于地址表:
CREATE TABLE Person (
PersonID BIGINT IDENTITY(1,1) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
MiddleName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
AddressID BIGINT NOT NULL,
约束pk_Person主键(PersonID),
约束fk_Person外键(地址ID)
参考地址(AddressID)
)
解决方法:
您正在尝试将AdresseID插入到Adresse表中不存在的人员表中.
尝试以下方法:
public void CreatePersonDB(ref Person person)
{
string CreatePerson =
@"INSERT INTO [Person] (FirstName, MiddleName, LastName, AddressID)
OUTPUT INSERTED.PersonID
VALUES (@FName, @MName, @LName, @AID)";
using (SqlCommand cmd = new SqlCommand(CreatePerson, OpenConnection))
{
// Get your parameters ready
cmd.Parameters.AddWithValue("@FName", person.FirstName);
cmd.Parameters.AddWithValue("@MName", person.MiddleName);
cmd.Parameters.AddWithValue("@LName", person.LastName);
cmd.Parameters.AddWithValue("@AID", person.PrimaryAddress.AddressID);
try()
{
person.PersonID = (int)cmd.ExecuteScalar(); // Returns the identity of the new tuple/record}
catch()
{
DialogResult dialogResult = MessageBox.Show("Adresse ID doesn't exist, do you want to add it?", "Alerte",MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
// create an insert query to the dbo.Adresse the same way you did with the dbo.person.
}
}
}
}
标签:c,sql-server 来源: https://codeday.me/bug/20191108/2008401.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。