首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

简单有关问题解决立即给分,多谢~

2012-03-01 
简单问题解决立即给分,谢谢~~~PrivateSubtcpServer_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)Di

简单问题解决立即给分,谢谢~~~
Private   Sub   tcpServer_DataArrival(Index   As   Integer,   ByVal   bytesTotal   As   Long)
             
                Dim   strData   As   String
                Dim   b   As   String
                Dim   i   As   Integer
                Dim   strselect   As   String
                Dim   strInsert   As   String
                Dim   SysTime   As   Date
               
                tcpServer(Index).GetData   b
             
                  sockbusy(Index)   =   0      
       
          sqlserverconnect   =   "driver={sql   server}; "   &   "server=MVP; "   &   "database=GprsTest; "   &   "uid=sa; "   &   "pwd=123 "
                               
                Set   conn1   =   New   ADODB.Connection              
   
                conn1.Open   sqlserverconnect                
                             
                Set   rs   =   New   ADODB.Recordset
                   
        SysTime   =   Now
       
        strInsert   =   "insert   into   GprsTest(记录时间,DateRec)   values( '   "   &   Now   &   "   ', '   "   &   b   &   "   ') "
        rs.Open   strInsert,   conn1,   adOpenDynamic,   adLockOptimistic
 
        strselect   =   "SELECT     *     FROM   GprsTest   order   by   记录时间 "
        rs.Open   strselect,   conn1,   adOpenKeyset,   adLockOptimistic
        Set   DataGrid.DataSource   =   rs
        nRCCount   =   rs.RecordCount
       
        DataGrid.FirstRow   =   nRCCount
   
   
      'conn1.Close
     
      'rs.Close      
       
       
          End   Sub

我发现程序运行起来以后,每当有数据过来,那系统资源就不断被消耗,虽然每次消耗不多,但时间长了总不是办法,我想每次都把rs.close   和   set   rs=nothing,   但是发现我的datagrid就不能显示数据了,另外,即便不让datagrid显示数据,就是把显示的那部分注释掉,还是一样的消耗,并且,一到rs.close就出错,大家帮帮忙啊~



[解决办法]
conn1 和 rs定义在模块中 或者 窗体级
[解决办法]
搞笑!
每次数据触发都创建新的Connection和打开数据集!
应保持数据集打开,而不是每次数据触发都创建新的Connection和打开数据集!


[解决办法]
1,你断开的时候顺序反了
rs.close
conn1.close

2.
strInsert = "insert into GprsTest(记录时间,DateRec) values( ' " & Now & " ', ' " & b & " ') "
conn1.excute strinsert

3 Set DataGrid.DataSource = rs
datgrid.refresh (或者是update)
[解决办法]
rs.Open strInsert, conn1, adOpenDynamic, adLockOptimistic
这一句可以用
conn1.excute strInsert
来代替

另外就是楼上说的
断开一个连接前要先把它的下层对象全部关闭
否则就不要关闭了,直接set nothing就可以
不过好的习惯是关闭掉
[解决办法]
不过一般都是把conn1作为公共变量来用
可以避免频繁的打开关闭连接带来的资源浪费

热点排行