【发布时间】:2016-08-16 15:27:16
【问题描述】:
使用存储过程尝试检查记录是否存在,如果存在,则应通过删除并给出适当的消息来进行检查,如果不存在则发送另一条消息。这是我的 C# 代码。
protected void deleteButton_Click(object sender, EventArgs e)
{
int deletedCustomers;
if (String.IsNullOrEmpty(txtCustID.Text))
{
lblError.Text = "Please enter a valid Customer ID";
return;
}
else
{
dynamic procedure = "dbo.deleteCustomer";
using (command = new SqlCommand(procedure, conn))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@CustID", txtCustID.Text);
}
try
{
conn.Open();
command.ExecuteNonQuery();
deletedCustomers = command.ExecuteNonQuery();
if (deletedCustomers > 0) {
lblError.Text = "Deleted!";
}
else
{
lblError.Text = "Customer ID does not exist";
}
conn.Close();
}
catch (Exception ex)
{
lblError.Text = "Error: " + ex.Message;
conn.Close();
}
}
}
这是我的 SQL Server 存储过程:
CREATE PROCEDURE [dbo].[deleteCustomer]
@CustID INT
AS
DELETE FROM [dbo].[Customer]
WHERE CustID = @CustID
运行此代码会根据需要删除记录,但不会输出正确的标签,当我尝试删除不存在或存在的记录时,它会给我“不存在”文本输出而不是“ Deleted' IF 语句中的文本输出。
我需要在 IF 语句中进行哪些更改才能使其看到 command.ExecuteNonQuery 等于或不等于任何值,这样我才能让它显示正确的输出?谢谢。
【问题讨论】:
-
你的 using 语句看起来很奇怪,它可能会把事情搞砸。看看:msdn.microsoft.com/sv-SE/library/yh598w02.aspx
-
对了,你为什么用
command.ExecuteNonQuery两次? -
@mmushtaq - 绝对确定它已被删除 :-)
-
@mmushtaq - 成功了。无论第一次调用它是否存在,第二次肯定不会存在,因此代码正确反映了这一点。
标签: c# sql sql-server