Click here to Skip to main content
16,020,343 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i am deleting a record from database. Before deleting i am checking whether the record has any reference to another table. IF not i am deleting the record.
I am getting the error "nullreferenceexception was unhandled by user code" even though the record is deleted.
I am returning a string from the stored procedure.

Can anyone give a solution for this?

SQL
DECLARE @temp as int;
-- Insert statements for procedure here
SELECT @temp = (SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM ALARM_MSTR_ALARM_DETAIL
WHERE ALARM_TYPE_ID = @ALARM_TYPE_ID)

IF @temp <> 1
BEGIN
Delete from ALARM_MSTR_ALARM_TYPE where ALARM_TYPE_ID = @ALARM_TYPE_ID
END
ELSE
SET @temp = 0;	
RETURN @temp



C#
public string DeleteAlarmType(int iAlarmId)
{
SqlParameter[] ParamAdd = new SqlParameter[1];
ParamAdd[0] = new SqlParameter("@ALARM_TYPE_ID", iAlarmId);
 
return SqlHelper.ExecuteScalar(ConfigurationManager.ConnectionStrings["MetaConnectionString"].ConnectionString, CommandType.StoredProcedure, "Delete_alarm_master_type", ParamAdd).ToString();
}
Posted
Updated 21-May-14 0:23am
v2
Comments
Kornfeld Eliyahu Peter 21-May-14 5:54am    
Show the code - including the line with the error!
Member 10755410 21-May-14 6:19am    
public string DeleteAlarmType(int iAlarmId)
{
SqlParameter[] ParamAdd = new SqlParameter[1];
ParamAdd[0] = new SqlParameter("@ALARM_TYPE_ID", iAlarmId);

return SqlHelper.ExecuteScalar(ConfigurationManager.ConnectionStrings["MetaConnectionString"].ConnectionString, CommandType.StoredProcedure, "Delete_alarm_master_type", ParamAdd).ToString();
}

I am getting error in the return statement.
Animesh Datta 21-May-14 5:55am    
provide store procedure and post some code where you got the error
Member 10755410 21-May-14 6:20am    
DECLARE @temp as int;
-- Insert statements for procedure here
SELECT @temp = (SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM ALARM_MSTR_ALARM_DETAIL
WHERE ALARM_TYPE_ID = @ALARM_TYPE_ID)

IF @temp <> 1
BEGIN
Delete from ALARM_MSTR_ALARM_TYPE where ALARM_TYPE_ID = @ALARM_TYPE_ID
END
ELSE
SET @temp = 0;
RETURN @temp


public string DeleteAlarmType(int iAlarmId)
{
SqlParameter[] ParamAdd = new SqlParameter[1];
ParamAdd[0] = new SqlParameter("@ALARM_TYPE_ID", iAlarmId);

return SqlHelper.ExecuteScalar(ConfigurationManager.ConnectionStrings["MetaConnectionString"].ConnectionString, CommandType.StoredProcedure, "Delete_alarm_master_type", ParamAdd).ToString();
}
Member 10755410 21-May-14 6:27am    
DECLARE @temp as int;
-- Insert statements for procedure here
SELECT @temp = (SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM ALARM_MSTR_ALARM_DETAIL
WHERE ALARM_TYPE_ID = @ALARM_TYPE_ID)

IF @temp <> 1
BEGIN
Delete from ALARM_MSTR_ALARM_TYPE where ALARM_TYPE_ID = @ALARM_TYPE_ID
SET @temp = 0;
END

RETURN @temp

In your storedprocedure instead of Return @temp use Select @temp
 
Share this answer
 
ExcecuteScalar returns null if there is no data returned by the queries in the stored procedure.
 
Share this answer
 
Comments
Member 10755410 21-May-14 6:38am    
ok but how do we handle it in the code. i have to do some operations based on the return value.
There are several points where null reference exception can occur:
1. ConfigurationManager.ConnectionStrings["MetaConnectionString"].ConnectionString - check your connection string(s) in config file
2. SqlHelper.ExecuteScalar().ToString() - maybe ExecuteScalar returns null?! debug it
 
Share this answer
 
Comments
Member 10755410 21-May-14 6:32am    
I checked it and it is returning null only. How to handle null value there?
Kornfeld Eliyahu Peter 21-May-14 7:32am    
That's a question you have to ask yourself! What the meaning of 'no data' when executing the SQL query...
After you answer the question you will be able to forge a solution...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900