C# SQL DELETE RETURN ONLY TRUE
本文关键字:ONLY TRUE RETURN DELETE SQL | 更新日期: 2023-09-27 18:00:36
我的代码只返回true,我不知道它在哪里。
public bool Delete(int RGP)
{
vsql = "DELETE FROM pescador WHERE RGP LIKE @RGP";
SqlCommand cmd = null;
if (this.Conectar())
{
try
{
cmd = new SqlCommand(vsql, objCon);
cmd.Parameters.AddWithValue("@RGP", RGP);
cmd.ExecuteNonQuery();
return true;
}
catch(SqlException sqlerro)
{
throw sqlerro;
}
finally
{
this.Desconectar();
}
}
else
return false;
}
看:这个片段没用:
catch(SqlException sqlerro)
{
throw sqlerro; // exception catched and thrown unmodified
}
如果您想在查询失败时返回false:
catch(SqlException sqlerro) {
return false;
}
如果没有更改任何记录,则您希望返回false:
return cmd.ExecuteNonQuery() > 0;
最后,不要忘记使用,箭头反模式、可读性等。
public bool Delete(int RGP) {
// Argument/State validation
if (objCon == null)
return false; // No connection
// SQL should be readable
vsql = @"delete
from Pescador
where Rgp like @RGP";
try {
// Dispose IDisposable (via using)
using (SqlCommand cmd = new SqlCommand(vsql, objCon)) {
cmd.Parameters.AddWithValue("@RGP", RGP);
//TODO: be sure that SET NOCOUNT is not ON
return cmd.ExecuteNonQuery() > 0;
}
}
finally {
Desconectar();
}
}
您总是返回true。检查您的代码。应该是这样的:
int i = cmd.ExecuteNonQuery();
return Convert.ToBoolean(i);
或者:
int i = cmd.ExecuteNonQuery();
if(i > 0)
i = 1;
else
i = 0;
return Convert.ToBoolean(i);