我的代码只返回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;
}
答案 0 :(得分:2)
看:这个片段没用:
catch(SqlException sqlerro)
{
throw sqlerro; // exception catched and thrown unmodified
}
如果您想在查询失败时返回false :
catch(SqlException sqlerro) {
return false;
}
如果没有更改记录,则要返回false :
return cmd.ExecuteNonQuery() > 0;
最后,不要忘记使用, arrowhead antipattern ,可读性等。
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();
}
}
答案 1 :(得分:1)
你总是回归真实。检查你的代码。这应该是这样的:
int i = cmd.ExecuteNonQuery();
return Convert.ToBoolean(i);
或者:
int i = cmd.ExecuteNonQuery();
if(i > 0)
i = 1;
else
i = 0;
return Convert.ToBoolean(i);