下了经典源码,但是不明白在 set conn=new connection 前,加上一句 set conn=nothing,这样写作用何在呢?有图说明

解决方案 »

  1.   

    nothing 就是什么都没有啊
    这句是确保conn不存在 然后在执行下面的代码
      

  2.   

    conn有可能给别人使用了,set nothing可以释放内存,确保数据安全,但这只是一个好习惯,实际即使不加这句,VB也可以自动释放其内存,就像定义一个整形变量,不用初始化其值就是零一样,显式初始化其值是一个好习惯。
      

  3.   

    Conn 显然是一个公共变量。当类初始化时,如果 Conn 已经实例化,或者类初始化可能反复进行的情况下,这个 Set Conn = Nothing 就是必要的。
      

  4.   

    conn是在模块中定义的公共变量.当然首先是一个全局变量.
    这个示例中,就是在类中直接操作一个全局变量.
    这种在类中直接操作公共全局变量的方法,虽然是充许的.但是教科书上说,这是不规范的.
    所以在这里再问问,这样做是真的不规范吗?我贴的代码,可是一个比较经典的示例呀,估计好多人都看过这个示例.
      

  5.   

    conn是一个全局变量,在声明类的时候可能conn已存在,用这句先释放!因为类的实例化你又不只用一个!!可能好几个实例啊!
    也许可以这样:         If conn Is Nothing Then
               Set conn = New ADODB.Connection
            Else
               Set conn = Nothing
               Set conn = New ADODB.Connection
            End If
      

  6.   

    问题是,如果 conn 是一个当前的连接,正在连着
    set conn=nothing 并不会关闭这个连接呀,只要关闭连接后才能释放。所以
    set conn=nothing 我不知有何作用?
      

  7.   


    9494.。。
    如果在此时这个Conn真有可能正在使用
    在这里又释放内存。。重新定义。。-_-!
      

  8.   

    LZ,我把你这个问题再延伸下,
    set conn=nothing和conn.close有区别吗?
    一个很基础的问题,但想看看究竟有多少同仁可以说出这其中的实质区别!
      

  9.   

    基础很重要,看人家的代码可以让自己成长的更快,但关键在于一定要"吃透"代码里面的每个细节!
    用抄的,,那并不可取,开源<>复制,粘贴代码!!!!!
      

  10.   

    set conn=nothing是释放内存,但是前提是 conn 已经关闭了,如果是打开状态,set conn=nothing对其是没有任何作用的.
    其实 set conn=nothing 在conn关闭之后,系统会自动进行的.只不过手动的set nothing更好些.让其在最短的时间内释放内存空间.
    我说的有问题吗?
      

  11.   

    conn.Close是断开连接,Set conn=Nothing是释放变量内存   
    conn.Close之后还可以conn.open   
    但Set conn=Nothing之后就不可以conn.open 了,要 set conn=new adodb.connection
      

  12.   

    Set conn=Nothing不会直接清除该对象的,只是把这个变量的引用变为空而已,是否还有其他变量引用该对象不得而知,   
    COM对象是引用计数为0时自己释放的,调用者无权释放其内存 
      

  13.   

       set conn=nothing 只是将变量conn从内存中释放,conn.clos是关闭对数据库的连接.
    close以后系统在一定时间类也会自动释放变量的内存空间.