首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(2) | 引用(0) | 阅读3325次
ADO对象的关闭以及数据库压缩

一般来说,自定v义ADO对象连接对数据库操作比较容易控制www.shengfang.org,大部分资料也讲解的多,对于ADO控件,资料一般只是介绍如何使用ADO控件访问数据库以及如何绑定其他控件显示,而对于关闭ADO控件的连接讲解比较少,我的程序想在主界面使www.shengfang.org用vADO控件显示数据库,还允许用户进行数据库压缩。虽然代码比较简单,但是还是费了不少功夫,本来还想单独作个小程序算了,后来终于解www.shengfang.org决了。进行了一下小结,希望对数据库开发人员有所帮助。

Vb使用ADO对数据库操作一般有两种方式,分别是自己定义控制连接以及使用ADODC控件进行数据库访问。

一、自己定义连接
Public BILL_CON As String    '定义连www.shengfang.org接字符串

Public billconn As New ADODB.Connection '定义全局ADO连接变量

Public billcmd As New ADODB.Command    'ADO命令
Publiwww.shengfang.orgc billrs As New ADODB.Recordset       'ADO记录

BILL_CON = "Provider=Microsoft.Jet.OLEDB.4.0;
Persist Security Info=True;
Data Souwww.shengfang.orgrce=" + Str_AppPath + "bill.mdb" + ";
Jet OLEDB:Database Password='123456'"

    billconn.Open BILL_CON

    Set billcmwww.shengfang.orgd.ActiveConnection = billconn

    billrs.CursorLocation = adUseClient

    billcmd.CommandText = "select * from eee"

    billrs.Open cmd, , adOpenDynamic,adLockOptimistic

上述代码就是打开一个数据库并执行一条查询命令

billrs.Closewww.shengfang.org

Set billrs = Nothing

Set billcmd =Nothing

billconn.Close

Set billconn = Nothing
上述代码就关闭连www.shengfang.org接,并释放资源。

一般这个方法比www.shengfang.org较容易控制,介绍也比较多,这里不多做解释了
二、ADODC控件
一般显示一个数据库,最方便的莫过于用ADODC和DBGRID控件了。

With ado

 .Connecwww.shengfang.orgtionString = BILL_CON  

 .CommandType = adCmdText

 .RecordSource = "select *  from  eee"

 .Refresh

 Set grid.www.shengfang.orgDataSource = ado

 grid.Refresh

  End With
 
 
这段代码也是经www.shengfang.org常有介绍,将ADO控件连接数据,并绑定表格控件,但是很少有说到如何关闭ADO控件的连接。一般可能认为窗口关闭ADO可以自行释放了。

我制作的一个软件www.shengfang.org,主界面使用ADO和DBGIRD绑定显示一个数据库,同时也定义了一个连接用来自行一些更新的SQL语句。大家也知道,如果在 Access 数据库中删除了多条记录,数据库并不会变小,必须进行压缩。所以我在界面上添加了一个菜单:压缩数据库。

1、增加引用:Microsoft Jet and Replication Objects

2、增加了如www.shengfang.org下代码:

et JR = New JRO.JetEngine

conn.Close

JR.CompactDatabwww.shengfang.orgase "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" + Str_AppPath + "gps2.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Str_AppPath
+ "gps2.mdd"

conn.Open ADO_CON

Set JR=Nothing
首先关闭自定义的www.shengfang.org连接,然后压缩数据库,重新连接,释放JR对象。

结果运行后总是报错:

实时错误 -21474www.shengfang.org67259 80004005 尝试打开的数据库已被机器 ‘’ 上的用户 ‘’ 以排它的方式打开。当数据库可使用后请再试一次
看来是由于我使用ADO控件打开了数据库,必须关闭数据连接才能正常进行压缩。

首先我想既然www.shengfang.org打开是给.ConnectionString 、RecordSource 赋值后调用REFRESH方法,应该可以将其赋为空字符串后REFRESH也可以。

运行后,出现如下提示框:

  未发现数据源名称

虽然压缩操作可www.shengfang.org以正常执行,但是弹出这么一个对话框对程序也不合适,经过反复调试,终于找到了方法:将ADO控件的.ConnectionString 、RecordSource属性赋值为空;释放Recordset对象。缺少一个操作都会出现上述对话框提示。最后的代码如下:

struser = AdoUser.RecordSource  ‘先保存当前的RecordSource属性

AdoUser.Recordset.Close    ‘关闭Recordset对象

 AdoUser.ConnectionString = ""     ‘赋值为空

AdoUser.RecordSource = ""

Set AdoUwww.shengfang.orgser.Recordset = Nothing        ‘释放Recordset对象 

Dim JR As JRO.JetEngine

Set JR = New JRO.JetEngine

conn.Close           
    ‘关闭自定义连接

JR.Compawww.shengfang.orgctDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" + Str_AppPath + "gps2.mdb", _

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +_
 Str_AppPath + "gps2.mdd"   ‘进行压缩

conn.www.shengfang.orgOpen ADO_CON    ‘重新打开自定义连接

Set JR = Nothing           ‘释放JR对象

AdoUser.ConnectionString = ADO_CON      ‘重新设置ADO控件的属性
AdoUser.RecordSource  = struser

AdoUser.Refresh                   ‘重新刷新
一般来说,自定www.shengfang.org义ADO对象连接对数据库操作比较容易控制,大部分资料也讲解的多,对于ADO控件,资料一般只是介绍如何使用ADO控件访问数据库以及如何绑定其他控件显示,而对于关闭ADO控件的连接讲解比较少,本人根据工作时的心得进行了一下小结,希望对数据库开发人员有所帮助。


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/adoopenclose.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1109564267

2005年2月28日12:17星期一  [Dev开发] 追踪此文的RSS
ssssw在 2007年12月15日23:16星期六 评论:
我试了一下好象不行啊,能联系一下吗,邮箱chenlie24 at 163 dot com

chenlie24在 2005年11月9日15:30星期三 评论:

Yippee 回复于 2005年11月9日15:51
什么问题?

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 11||用户: 2563 [列表]
今日:697||到访:2682336
Rss:841979||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8