J
Jeff User
Hi all
I am using an OleDbDataReader.
I need to establish and then keep the connection that I use, but I do
not need to keep the data reader, after this operation is over.
Therefore, regardless of failure or not, I need to close the data
reader. So, in trying to practice good habits (and if I dont it causes
an error the next time around) I close the reader before exiting this
procedure.
This is fine until I need to handle errors. So, I implement
try{}catch{} to handle if an error occurs. If an error, I also need to
close reader before exiting.
Although I am setting the data reader in a Try statement, I can not
close it in the Catch statement because of compile error:
use of unassigned local variable 'LocalReader'
How can I handle this?
Here is the basic idea:
public string[] select(string SqlStatement)
{
OleDbDataReader LocalReader;
try
{
LocalReader = executeReader(SqlStatement);
while(LocalReader.Read())
{
... do some data stuff here...
}
}
catch(Exception er)
{
LocalReader.Close(); // unassigned local variable here
.... throw error, or whatever...
}
LocalReader.Close(); //this close is OK
return sResultArray; // or whatever...
}
private System.Data.OleDb.OleDbDataReader executeReader (string
sqlStmnt)
{
// Uses server connection that is extablished elsewhere
// prior to executing operations on db
System.Data.OleDb.OleDbCommand cmd = new
OleDbCommand (sqlStmnt, this.get_servconn());
System.Data.OleDb.OleDbDataReader rdr = cmd.ExecuteReader();
return rdr;
}
This code works without the try-Catch statements but when there are
errors such as table not found, etc.., I need to close the reader
before trying again.
I have read several basic data access articles but none show how to
handle closing in case of error.
Thanks
Jeff
I am using an OleDbDataReader.
I need to establish and then keep the connection that I use, but I do
not need to keep the data reader, after this operation is over.
Therefore, regardless of failure or not, I need to close the data
reader. So, in trying to practice good habits (and if I dont it causes
an error the next time around) I close the reader before exiting this
procedure.
This is fine until I need to handle errors. So, I implement
try{}catch{} to handle if an error occurs. If an error, I also need to
close reader before exiting.
Although I am setting the data reader in a Try statement, I can not
close it in the Catch statement because of compile error:
use of unassigned local variable 'LocalReader'
How can I handle this?
Here is the basic idea:
public string[] select(string SqlStatement)
{
OleDbDataReader LocalReader;
try
{
LocalReader = executeReader(SqlStatement);
while(LocalReader.Read())
{
... do some data stuff here...
}
}
catch(Exception er)
{
LocalReader.Close(); // unassigned local variable here
.... throw error, or whatever...
}
LocalReader.Close(); //this close is OK
return sResultArray; // or whatever...
}
private System.Data.OleDb.OleDbDataReader executeReader (string
sqlStmnt)
{
// Uses server connection that is extablished elsewhere
// prior to executing operations on db
System.Data.OleDb.OleDbCommand cmd = new
OleDbCommand (sqlStmnt, this.get_servconn());
System.Data.OleDb.OleDbDataReader rdr = cmd.ExecuteReader();
return rdr;
}
This code works without the try-Catch statements but when there are
errors such as table not found, etc.., I need to close the reader
before trying again.
I have read several basic data access articles but none show how to
handle closing in case of error.
Thanks
Jeff