Cool, a question on that:
What happens if a exception occurs?
I meand close() gets called at the end of the using block, but does it get also 
called when an exception occurs (sort of finally)?
If yes, I'm changing my programming style :)
Another question, how would it look like if you had to catch an exception (i.e. 
to rollback a transaction)?

Thanx :)

Jaroslaw Kowalski wrote:
Hi Emil,

Also another tip: you don't need to explicitly set connection etc. to null.
Cosider following improvement:

IDbConnection dbcon;
IDbCommand dbcmd;
IDataReader reader;
try {

...

} finally {
// cleanup, even if error occurs, closing the reader is important because while it is open no other reader can be opened
 if (reader!=null) reader.Close();
 if (dbcmd!=null) dbcmd.Close();
 if (dbcon!=null) dbcon.Close();
}


A small tip: Your example is very java-ish. You could reduce the amount of code by using C# using() statement which provides automatic cleanup for connection, command and reader. I believe that the following is much more readable and saves a lot of typing:

=====
using (IDbConnection c = new NpgsqlConnection("connectionString"))
{
   c.Open();
   using (IDbCommand cmd = c.CreateCommand())
   {
       cmd.CommandText = "...";
       using (IDataReader reader = cmd.ExecuteReader();
       {
           while (reader.Read())
           {
           }
       }
}
======

--
Emil R. Emilov
-----------------------------------------------------------------------
mailto:[EMAIL PROTECTED]
http://www.emilov.de
_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to