【发布时间】:2016-02-06 13:47:33
【问题描述】:
我有带表格的数据库
-
dbo.auctions:[id][productid][lastbider][bidvalue][lastbid] -
dbo.products:[id][name] -
dbo.users:[id][name][password][bids]
我需要编写一个程序来检查[bids] 是否大于0。
如果是,则更新[lastbid] 并将[bidvalue] 添加到其中,例如lastbid = lastbid + bidvalue 和[bids] 降低1,bids = bids - 1。我需要将其连接到Visual Studio 中的Button。
我写了这个程序:
ALTER PROCEDURE [dbo].[usp_makebid] (
@userid int, @auctionid int
)
AS
DECLARE @bids int, @lastbid int
SELECT @bids = COUNT (*)
FROM users
WHERE users.id = @userid
IF @bids > 0
BEGIN
UPDATE auctions
SET lastbid = @lastbid + bidvalue
WHERE id = @auctionid
AND lastbid = @lastbid
UPDATE users
SET bids = @bids - 1
WHERE bids = @bids
END
并将其连接到Button:
protected void Button1_Click(object sender, EventArgs e)
{
using (var con = new SqlConnection(@"data source=JOVAN-PC;database=aukcija_jovan_gajic;integrated security=true"))
{
con.Open();
var userid = 1;
var auctionid = 2;
var cmd = new SqlCommand("usp_makebid", con);
cmd.Parameters.AddWithValue("@userid", userid);
cmd.Parameters.AddWithValue("@auctionid", auctionid);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
con.Close();
}
}
但是当我点击按钮时,什么也没有发生。
主页看起来是这样的,也许这可以给你一个大概的想法:
【问题讨论】:
-
尝试调试你的应用程序;使用 try/catch 来识别错误...
-
如何在不传递用户 ID 和拍卖 ID 值的情况下更新您的数据库?
标签: c# asp.net visual-studio sql-server-2008 stored-procedures