Click here to Skip to main content
16,020,347 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

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...
In your storedprocedure instead of Return @temp use Select @temp
 
Share this answer
 

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