如何使用 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
好的,基本上我已经在 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