I’m not sure if my question is clear so here’s a code sample:
public static bool isRecordExist(int ID)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand(commandText, connection))
{
int flag = int.Parse(command.ExecuteScalar);
if (flag)
return false;
else
return true;
}
}
}
So, now I understand that I don’t need to close or dismiss any Sql objects when I have the ‘using’ keyword, because it does that automatically as soon as you get our of it’s brackets but now the we reach to the ‘return’ part. will it dismiss and close the objects properly or do I need to save this value and make my check and ‘return’ outside the ‘using’ code ?
Yes, the connection will be closed.
Note that this can cause problems. Say, for example, that you want to return a DataReader from the function. As soon as you return the datareader, the connection that your reader depends on is closed by the using block and you can’t read any records. In those situations, I use either a delegate or an iterator block to get around the problem, depending on what I’m doing.