如何使用 Web 应用程序将来自 2 个不同来源的数据插入到 SQL 服务器中的 2 个不同表中?

How to insert data from 2 different sources into 2 different tables in SQL server using Web application?

好的,基本上我已经在 Visual Studio 2012 Ultimate 中创建了 Web 应用程序,其中一个页面具有以下设计:

我还在数据库中创建了 3 个 table:

产品: [id] [name]

拍卖: [id] [productid] [lastbider] [bidvalue] [lastbid]

用户: [id] [name] [password] [bids]

我需要的是,当我点击按钮时,它需要将来自 Textbox 的文本插入来自产品 table 的 [name] 中,还需要插入来自 Listbox 的数字] 从拍卖 table 进入 [bidvalue]。我该怎么做,我需要 2 SqlCommands?

试试这个,然后打电话给

    InsertData("Insert into Products (Name) Values ('" + txtName.Text + "'); Insert Into Auctions (bidvalue) Values ('" + lstBidValues.SelectedValue + "');"); 

    public void InsertData(string query)
    {
        using (SqlConnection con = new SqlConnection("Your connection string here"))
        {
            if (con.State != ConnectionState.Open)
                con.Open();
            using (SqlCommand command = con.CreateCommand())
            {
                command.CommandText = query;
                command.ExecuteNonQuery();
            }
        }
    }

是的,基本上您正试图对两个不同的表执行 INSERT,因此您需要执行两个不同的 INSERT 操作。不过,我怀疑您可能想执行 UPDATE 但不能确定,除非您澄清它。

同样,您可以使用像

这样的存储过程一次性执行这两个操作
create procedure usp_addData(@name varchar(10), @bidvalue INT)
as
begin
//Perform first insert/update in products table using the @name parameter

//perform second insert/update in auctions table using the @bidvalue parameter
end

从您的应用程序调用此存储过程,而不是进行两次不同的数据库调用。

*** 省略了 C# 代码示例以使答案简单。您可以从 SO 中的 C# 获得许多调用存储过程的示例。

由于您需要在拍卖 table 中使用 ProductId,因此您需要在产品中插入,然后获取您在 [=17= 中创建的 productId ] 将其与您拥有的 bidValue 一起添加到您的拍卖 table 中。这可以通过一个 SqlCommand 调用您的存储过程来完成,它应该如下所示...

BEGIN TRANSACTION

    INSERT INTO PRODUCTS VALUES('PRODUCT NAME')
    DECLARE @newProductId int = SELECT SCOPE_IDENTITY()

    INSERT INTO AUCTIONS(ProductId, lastBidder, bidValue, lastbid)
    VALUES (@newProductId, 'yourlastbidder, 'bidValue', 'lastbid')

END TRANSACTION