我试图在单击按钮时运行存储过程。如果尚不存在,它将插入一列新的型号。
如果我在代码之外运行此存储过程(只需在服务器资源管理器中单击execute)并插入参数值,则它确实会执行预期的操作。
但是,当我尝试从代码中调用此存储过程时,它将告诉我1行受影响,但是当我查看数据库时,那里没有记录。
我之前已经编写了许多存储过程,但从未遇到过此问题,因此我完全不知所措。
这是我的存储过程:
CREATE PROCEDURE [dbo].[AddServers]
@Model NVARCHAR(50),
@Serial NVARCHAR(50)
AS
IF EXISTS(SELECT [Model].[ModelNumber]
FROM [Model]
WHERE [Model].[ModelNumber] = @Model)
BEGIN
UPDATE [Model]
SET [Quantity] = ([Quantity] + 1)
WHERE [Model].[ModelNumber] = @Model
SELECT @@ROWCOUNT
END
ELSE
BEGIN
INSERT INTO [Model] ([ModelNumber], [Quantity])
VALUES (@Model, 1)
SELECT @@ROWCOUNT
END
IF (@Serial != '0')
BEGIN
INSERT INTO [Server] ([Model], [SerialNumber])
VALUES (@Model, @Serial)
SELECT @@ROWCOUNT
END
我要调用存储过程的代码:
private void AddServers(string model, string serialNumber = "0")
{
using (SqlConnection conn = new SqlConnection(@"data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\Exagrid.mdf;integrated security=True;"))
{
using (SqlCommand command = new SqlCommand("AddServers", conn))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Model", model);
command.Parameters.AddWithValue("@Serial", serialNumber);
conn.Open();
command.ExecuteNonQuery();
}
}
}
PS。我的变量等于:model = 1,serialNumber =3。我正在使用简单的条目进行测试。