在一个语句SQL Server中插入两个表

时间:2015-03-01 23:31:03

标签: c# sql sql-server winforms

我不确定如何解决这个问题。

我有三个表,bookcollectionbooksusers

bookcollection : bookc_id, bookc_bookid, bookc_bookuser
books : bookid, title, author, year
users : userid, username, password
  • bookidbookc_bookid
  • 的外键
  • useridbookc_bookuser
  • 的外键

我有一个C#Winforms应用程序,我正在尝试插入一个带有文本框的新书。但是,我撞墙了。我可以在books表中插入一本新书。但是,我还需要能够将useridbookid插入到bookcollection表中,以便它可以在用户的​​书籍集中。

这就是我所拥有的。

private void add()
{
    using (SqlConnection connection = new SqlConnection(constr))
    {
        SqlCommand cmd = new SqlCommand("INSERT INTO books (title, author, year) VALUES (@t, @a, @y)");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = connection;
        cmd.Parameters.AddWithValue("@t", title.Text);
        cmd.Parameters.AddWithValue("@a", author.Text);
        cmd.Parameters.AddWithValue("@y", year.Text);
        connection.Open();
        cmd.ExecuteNonQuery();
    }

在主窗体上,我有一个字符串,用public string Username;

这样的用户名传递

任何人都可以帮我解决这个问题吗?我是否需要创建存储过程,如果是这样,我该怎么做?提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试在书籍上使用插入触发器。使用触发器,当您在书籍上插入数据时,它会自动将数据添加到具有给定参数的其他表格中。

答案 1 :(得分:0)

然后存储过程将是更好的解决方案,将参数传递给数据层。试试这个:

create proc sp_AddToBookCollection
(
@bookid int,
@userid int
)
as
begin
insert into bookcollection(bookc_bookid, bookc_bookuser)
values (@bookid,@userid)
end

在使用此过程时,您应该将userid值传递给查询。