gpt4 book ai didi

c# - ExecuteReader 可以在 C# 中的 if 条件下工作吗

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:49 25 4
gpt4 key购买 nike

我想从数据库中删除数据,但在 C# asp.net 中执行 ExecuteReader 之前,我想检查数据是否存在。

我想这样工作,如果有任何可能的解决方案请帮助。

SqlCommand cmd = new SqlCommand("spDelete", scon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", TextBox6.Text.ToString());
scon.Open();
//want to check here before execution. is this possible?

if(cmd.ExecuteReader() == TextBox1.Text)
{
// then execution
rdr = cmd.ExecuteReader();
}
else
{
Lblmsg.Text =- "Record doesn't exist";
}

最佳答案

您使用了错误的方法来执行您的存储过程。在您的情况下,正确的是 ExecuteNonQuery它返回受命令影响的记录数。如果您的存储过程删除了记录,则返回值将不为零,否则(没有与 ID 参数匹配的记录)返回值为零

using(SqlCommand cmd = new SqlCommand("spDelete", scon))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", TextBox6.Text);
scon.Open();
int numRecordsDeleted = scon.ExecuteNonQuery();

if(numRecordsDeleted == 0)
Lblmsg.Text = "Record doesn't exist";
else
Lblmsg.Text = "Record deleted";
}

最后,你确定你的ID字段是字符串吗?使用 AddWithValue 传递参数是危险的,您应该始终指定正确的数据类型。例如,如果 ID 是一个 Integer 数据类型的字段,那么你应该写

cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(TextBox6.Text);

关于c# - ExecuteReader 可以在 C# 中的 if 条件下工作吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com