我收到此错误
The INSERT statement conflicted with the FOREIGN KEY SAME TABLE constraint "FK__Subjects__fk_sub__6383C8BA".
The conflict occurred in database "The Library", table "dbo.Subjects", column '_id'.
_id
是身份,唯一且主要的。并且应在将内容输入数据库时自动生成。
我的sql用于创建表。
create table Subjects
(
_id integer identity not null,
unique(_id),
primary key(_id),
subject varchar(50) not null,
[content] varchar(MAX) not null,
fk_subfolderTo integer not null,
foreign key(fk_subfolderTo) references Subjects(_id),
signed varchar(150) not null,
fk_writer integer not null,
foreign key(fk_writer) references Users(_id)
)
和用于插入表格的C#代码。
public static void Create (SqlConnection con, int userId, string subject, string content, string signed, int subfolderTo)
{
using (var command = new SqlCommand("Insert into Subjects (subject, [content], fk_subfolderTo, signed, fk_writer) values ('" + subject + "', '" + content + "', " + subfolderTo + ", '" + signed + "', " + userId + ")", con))
{
command.ExecuteNonQuery();
}
}
我正在使用MSSQL。
答案 0 :(得分:1)
正在生成ID。问题是您传递的任何内容,因为子文件夹ID不在现有数据集中。
我还建议将fk_subfolderto设置为可空,否则你将被迫最终将主题作为自己的子主题。
此外,您应该使用parameterised queries,而不是在遇到SQL注入噩梦之前通过字符串连接构建SQL。