0

我收到这个错误

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。

4

1 回答 1

1

正在生成 ID。问题是您作为子文件夹 ID 传递的任何内容都不在现有数据集中。

我还建议将 fk_subfolderto 设置为可为空,否则您将被迫最终将主题作为自己的子主题。

此外,您应该使用参数化查询,而不是在遇到 SQL 注入噩梦之前通过字符串连接来构建 SQL。

于 2013-09-21T14:53:55.017 回答