【发布时间】:2019-05-26 22:33:30
【问题描述】:
They have relation between AuthorID and AID
I want to add attributes to 2 tables at the same time
public static bool AddNewPackage(BookCitation package)
{
MySqlConnection connection = DataAccess.getConnection();
string insertStatement =
@"INSERT into Book (
AuthorName,
PubYear,
BookTitle,
PubCity,
PubName,
PageNumbers)
VALUES (
@AuthorName,
@PubYear,
@BookTitle,
@PubCity,
@PubName,
@PageNumbers);
INSERT into Author (
AID,
AuthorNamee,
Affiliation)
VALUES (@AID, @AuthorNamee, @Affiliation)";
MySqlCommand insertCommand = new MySqlCommand(insertStatement, connection);
insertCommand.Parameters.AddWithValue("@AID", package.AID);
insertCommand.Parameters.AddWithValue("@AuthorName", package.AuthorName);
insertCommand.Parameters.AddWithValue("@AuthorNamee", package.AuthorNamee);
insertCommand.Parameters.AddWithValue("@Affiliation", package.Affiliation);
insertCommand.Parameters.AddWithValue("@PubYear", package.PublishYear);
insertCommand.Parameters.AddWithValue("@BookTitle", package.BookTitle);
insertCommand.Parameters.AddWithValue("@PubCity", package.PublisherCity);
insertCommand.Parameters.AddWithValue("@PubName", package.Publisher);
insertCommand.Parameters.AddWithValue("@PageNumbers", package.PageNumbers);
try
{
connection.Open();
insertCommand.ExecuteNonQuery();
return true;
}
catch (SqlException ex)
{
MessageBox.Show(ex.GetType() + ex.Message);
return false;
}
finally
{
connection.Close();
}
}
public class BookCitation
{
public int BookCID { get; set; }
public int AID { get; set; }
public string AuthorName { get; set; }
public string AuthorNamee { get; set; }
public string Affiliation { get; set; }
public DateTime PublishYear { get; set; }
public string BookTitle { get; set; }
public string PublisherCity { get; set; }
public string Publisher { get; set; }
public string PageNumbers { get; set; }
}
如何使用外键添加 AuthorID?
【问题讨论】:
-
您在
package.AID中有什么价值? Book 表上有AID列吗? -
它是 AUTO_INCREMENT。如果我删除外键,我可以使用 authorID 添加到作者表,但书表的 AID 将为零 (0)。
-
@ChetanRanpariya 我改变了,但我认为没关系:'无法添加或更新子行:外键约束失败(
bibliographydb10.book,CONSTRAINTbook_ibfk_1FOREIGN KEY (AID) REFERENCESauthor(AID))' 如果我删除外键 i.stack.imgur.com/H1CmK.jpg i.stack.imgur.com/Yg6N0.jpg -
这很重要。如果 Book 表中有 AID 列,并且它引用 Author 表,则不能在 AID 列中没有值的情况下在 book 表中插入行。在您的情况下,您首先需要在 Author 表中插入行并使用新作者的 AID 在 book 表中插入行。这是基于您到目前为止所解释的内容。我还是不知道你的表结构。
-
@ChetanRanpariya 好的,然后我做了“AID”而不是“AuthorID”,但仍然出现同样的错误“无法添加或更新子行:外键约束失败(bibliographydb10.book,CONSTRAINT book_ibfk_1 FOREIGN KEY(援助)参考作者(援助))'。这些是表结构i.stack.imgur.com/Bvdkp.jpgi.stack.imgur.com/SlAEq.jpg
标签: c# mysql visual-studio foreign-keys