连接数据库 如果采用的 ADO.NET 进行连接,默认情况下会有一个你看不见的 连接池 来管理这些连接,然后 你每次程序里的关闭数据库,只是把连接放回连接池,方便下次重新连接。
创新互联于2013年成立,先为新干等服务建站,新干等地企业,进行企业商务咨询服务。为新干企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
所以不用就关,避免连接池连接数过多。
我 看了一下应该是你第一次连接上后,cnn.open就打开并持续开着,并没有关闭,所以,你断网后,第二次连接,他依然是打开的。
另外:
我个人建议你要学会用vb.net的组件,自己连太麻烦,他有现成的,你直接在数据库里选择添加新数据源,按照提示把数据库添加上,然后,你会看到你的程序下面会多了个数据集(dataset).
最后要做的就是使用这些数据集了。以form1为例,你添加一个datagridview,然后在他的数据源上选择刚才添加的项数据集中的某个数据表,然后你会看到,在form1中多了一个dataadapter,sqlconn,datset,并且在form1的load事件中,你会发现多了一条语句,dataadapet.fill(dataset)。
当你运行程序并更改了datagridview后,想要更新数据,只需要在后面,增加一个button,并设置他的click事件为:dataadapter.update(dataset)
怎么样,是不是还有一个问题想问?就是如何更改数据源,很简单,在form1的load事件中,dataadapter.fill(dataset)这条语句之前,再增加一条,sqlconn.ConnectionString = "server=**;database=**;uid=**;pwd=**;Connect TimeOut=2"这个就是你的数据源。
希望我的答案能令你满意。
感觉很可能是只有打开没有关闭或释放资源的操作,所以内存不够用了
需要把你的代码贴出来分分析
使用ADO控件可以方便的在VB6中访问ODBC数据库,但是通过直接放置ADODS控件来获得ADO的数据连接比较麻烦,我们可以在VB工程中创建一个公共数据模块,将ADO控件的初始化、建立连接、关闭连接等操作都写到函数中,这样就可以在工程的其他模块中共享调用这个ADO连接。
一次完整的ADO调用操作分为如下几个步骤:
打开ADO到数据库的连接,初始化ADO RECORDSET集。
通过写入SQL语句执行查询并返回查询结果RECORDSET集;或者可以通过写入SQL语句执行相应数据库操作。
释放RECORDSET集,关闭数据库连接。
需要注意的是,每个动态创建的ADO同时只能被一个过程调用,如果需要进行多表并行操作,可能需要在公共数据模块中建立多个动态ADO。
下面是相关的代码:
'-----------------------------------------------------------------
'如下代码保存在名为my.bas的工程模块中
Public CONN As Adodb.Connection '定义ADO CONNECTION对象
Public RS As Adodb.Recordset '定义ADO RECORDSET对象
'****************************
'打开数据库连接
'****************************
Function ConnOpen()
Dim ASTR As String
Set CONN = New Adodb.Connection
ASTR = GetDatabasePath 'MDB文件数据库路径
CONN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ASTR ";Persist Security Info=False"
'本例的ODBC连接为JET4.0的直接到MDB文件的连接,如果使用ODBC数据源可以使用如下CONNECTION串:
'Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=数据源名称;Initial Catalog=数据表库名称
你是关闭本地的,又没有立即关闭远程Server上的,他是个pip协议对等试的连接,打个比方,两个电脑要共享一个文件夹,不能说直接用一台电脑配好就可以看吧,要设置共享协议。
这边释放关闭连接不代表就更新了另一台电脑,他还是在判断有无连接响应,这就是为什么连接多了会形成“死锁”。