Re: where should I dispose the connection ?

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Alexander Shirshov (alexander_at_omnitalented.com)
Date: 02/28/05


Date: Mon, 28 Feb 2005 19:24:22 +0700

Con variable points to the same connection object you created in
GetConnection, sure.

Right now you're doing everything correctly... almost. You should check that
connection was opened before closing it otherwise you'll get the exception
in your Finally block:

If conn.State = ConnectionState.Open
    conn.Close()
End If

"ypul" <ypul@hotmail.com> wrote in message
news:uXbhboYHFHA.3912@TK2MSFTNGP10.phx.gbl...
thanks alex
I have a doubt ..
when I return a connection to the caller class will it create a copy of the
connection object or it will pass the same object ??

In the code below ...is the "Con" pointing to the same object of
getconnection...??..
if yes then i should dispose "con" in caller1 class ... and there is no
danger of undisposed object which I created in the "Connection" class, RIGHT
?
Public Class caller1
Public Function getAll() As DataTable
Dim dt As DataTable
Dim da As SqlDataAdapter
Dim dc As SqlCommand
Dim strsql As String
Dim con As SqlConnection
Try
' get the data from the dataLayer
dt = New DataTable()
con = Connection.getConnection

dc = New SqlCommand(strsql, con)
da = New SqlDataAdapter(dc)
da.Fill(dt)
Return dt
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
End Function

End Class
"Alexander Shirshov" <alexander@omnitalented.com> wrote in message
news:utDvhfYHFHA.4060@TK2MSFTNGP14.phx.gbl...
> Because of Finally block your method always return closed and disposed
> connection, not very useful... Remember, Finally blocks ALWAYS execute.
>
> You must return opened connection and let callers dispose it when they
> have
> finished working with it.
>
> HTH,
> Alexander Shirshov
>
>
>
> "ypul" <ypul@hotmail.com> wrote in message
> news:ezvnNaYHFHA.2132@TK2MSFTNGP14.phx.gbl...
> > the code below given is connection class ... now I want to use the
> > connection in another class , by using the getConnection method.
> >
> > where should I call con.dispose() ?
> >
> > in connection class or in the caller class ?
> >
> > if I call con.dispose in connection class as given below ..will I be
> > able
> > to
> > use the connection in the other class where I am calling this method
> > ..or
> > I
> > will get a NULL connection ??
> >
> > -------------------------Code -------------------------
> >
> > Public Class Connection
> >
> > Public Shared Function getConnection() As SqlConnection
> >
> > Dim con As SqlConnection
> >
> > Try
> >
> > con = New
> > SqlConnection(ConfigurationSettings.AppSettings.Get("ConnectionString"))
> >
> > con.Open()
> >
> > Return con
> >
> > Catch ex As SqlException
> >
> > Throw ex
> >
> > Finally
> >
> > con.Close()
> >
> > con.Dispose()
> >
> > End Try
> >
> > End Function
> >
> >
>
>



Relevant Pages

  • Re: where should I dispose the connection ?
    ... > connection was opened before closing it otherwise you'll get the exception ... > connection object or it will pass the same object ?? ... > Dim da As SqlDataAdapter ... > Dim con As SqlConnection ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Memory Leak in swing application (ImageIcon problem)
    ... private class Person extends Object { ... public void run{ ... java.sql.Connection con = ... I.E you fire your timer, do the random, which opens your connection. ...
    (comp.lang.java.gui)
  • Re: static data access
    ... Never use the static connection. ... public class test ... public static string ConnectionString ... SqlConnection con = new SqlConnection ...
    (microsoft.public.dotnet.framework.aspnet.datagridcontrol)
  • Re: Row cannot be located for updating
    ... > result a recordset containing one row, ... > Strangly enough, the value that I changed, is changed in the database ... > Dim Con As New ADODB.Connection ... > 'Execute the query and remove the active connection ...
    (microsoft.public.data.ado)
  • Re: Optimising Connections & DataAdapters
    ... The connection object that you declare and instantiate is not the same as ... > a new SqlConnection in *every* DataLayer class? ... > public class ABC ... > SqlCommand cmd = new SqlCommand(sql, con); ...
    (microsoft.public.dotnet.framework.aspnet)