设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 8702|回复: 16
打印 上一主题 下一主题

SQLServer 数据库应用开发设想和初步实现方法(ADP)

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2014-12-11 10:26:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在传统的以SQLServer数据库为基础的Access客户/服务器开发方案中,数据库的操作是基于链接表、传递查询以及ADO等接口技术来实现的。其中,链接表技术和传递查询是通过ODBC来连接数据库。

这样出现了一个问题,那就是ODBC缓存的问题,大家可能实验过,如果,在数据库中已经有一个链接表能正常登录服务器链接数据库中的表,那么其它的链接到这个数据库的链接表就不用通过安全验证也能链接数据表,这样的好处就是只要一次连接成功,其它的链接表就不用保存密码了。但同样也有一问题,不能控制断开与数据库的连接,当然,如果意外断开了数据库连接,基本上无法再次连接数据库,只有关闭应用程序重新打开才能正常连接。
另外一个问题就是数据缓存问题,在Access选项设置有1000条记录缓存的设置项,平常一般都很少人注意,事实上Access的链接表,是利用DAO对远程数据库的数据表进行模拟,模拟成Access的本地表,便于按Access的常规操作来操作远程数据库中的数据表,这样一来,带来两个方面的问题,第一,应用程序的磁盘占用会快速增长,第二,带来很大的网络流量,增加网络的负担。如果基于这个表再做查询的话,基本上会缓存全部的数据表的内容,那么,对磁盘占用和网络的需求就会大大增加,应用程序的运行就会变得很慢。

于是乎,传递查询的方案就得重要起来,但传递查询的使用要求很高,要求懂得SQLSerever T-SQL语言,而且设计不直观,几乎不是一般的人员可以使用得来、可以掌握得好的。

比较了这些方案之后,人们发现ADO似乎很好地解决了这些问题,没有本地缓存的困扰,连接易于控制,代码也比较简洁,可是一到设计阶段,人们发现使用ADO的不方便,设计程序不直观,绑定数据复杂,并且,不能用ADO记录集作为报表的数据源,使得很多人望而止步。

从Access 2000开始,Access提供的ADP的解决方案,用以解决基于SQLServer数据库的客户/服务器的纯ADO方案,设计直观方便,能像Access本地数据库开发一样直接绑定,报表也能使用ADO记录集,也能使用DLookup类的应用程序函数,使得这种C/S开发方案极为简单,没有了本地缓存的困扰,使用OpenConnection和CloseConnection能够方便地控制连接以保证数据库的安全和正常运行。同时,它还能完成数据库的创建、维护和设计工作,这些是Access传统应用程序无法比拟的优势,使得SQLServer数据库的Access C/S开发一条龙。

当然,这种ADP方案不是没有缺点,第一,没有本地数据,因此离线操作复杂;第二,只有一个数据库连接,连接另一个数据库只能断开当前数据库,或者用ADO连接另一个数据库;第三,连接的数据库只能是SQLServer数据库,当然也能用ADO连接其它数据库。

可惜的是,Access 2013取消了ADP的支持,转移到Access Web数据库上了。但是,Access 2010仍然支持。不管怎么说,ADP仍然不失为一种优秀的开发方案。


ADP的另一个优点就是纯粹应用程序,不像传统的Access应用程序那样包含数据部分,不会因为使用时间长而应用程序的磁盘占用增长,应用程序加载快。

另外,有网友有这样的疑问,ADP保存数据库连接密码,做不到数据库安全,因为,Access就应用程序可能通过链接ADP而访问SQLServer的内容;而不保存数据库密码,每次打开ADP都要提示输入数据库连接登录ID和密码,造成用户的困扰。其实,这根本不是问题,保存密码完全是为了SQLServer数据库设计和ADP应用程序的设计方便,而在真正应用时是不应该保存ADP的数据库连接密码,数据库的连接是要通过OpenConnection来连接数据库和CloseConnecton来断开数据库连接,并通过OpenConnection "Provider=;"来清除ADP的数据库连接信息。这样一来只要在退出ADP之前确保运行如下语句:
  1. CloseConnection
  2. OpenConnection "Provder=;"
复制代码

就能保证ADP启动时不出现输入密码的提示框,而通过OpenConnection来连接SQLServer数据库。

ADP的缺陷,可以通过ADO来进行弥补。
一,没有本地数据,可以通过一个本地Access mdb数据库的ADO连接来弥补。
二,对于第二个数据库,同样可以通过第二个ADO连接来弥补。
三,对于其它数据库,也是一样通过第二个ADO连接来弥补。

由于Access应用程序,不管是传统的还是ADP的方案都是长连接方案,服务器负担相对较重。传统的方案无法控制连接,而ADP可以。

综上所述,采用ADP方案进行SQLServer数据库C/S开发是非常不错的。

下面,叙述一下ADP开发方案的基本方法
一,创建SQLServer数据库。三种方法,1,用新建ADP的方法创建新的SQLServer数据库,此方法适合初学者,缺点:数据库初始大小和增长速度不可控,数据库文件文件位置在SQLServer的Data目录中。2、利用SQLServer的企业管理器或者SQLServer Management Studio创建数据库,此法通用,缺点:需要软件。3、通过ADO连接,直接执行创建数据库的TSQL语句,此法适合高级用户,缺点:要懂VBA、ADO和TSQL。
二,创建数据库对象。四种方法,1,在连接了数据库的ADP中,使用Access创建数据库中的表、索引、视图、函数和存储过程以及触发器,适合初学者;2,利用SQLServer的企业管理器或者SQLServer Management Studio创建这些对象,适合初学者;3,通过ADO连接,使用T-SQL语句创建这些对象,适合有经验的程序员;4,使用利用SQLServer的iSQL/oSQL或者SQLServer Management Studio,使用T-SQL语句创建这些对象,适合有经验的程序员和数据库管理员。
三,用传统的Access应用程序技术创建所需的窗体、报表以及所需的模块和宏。这个时候,ADP已经可以运行起来了。
四,编写控制ADP连接的代码,控制ADP的启动和退出。
五,部署。

对于基于SQLServer数据库使用传统Access的应用程序开发方案的,也可以使用上述ADP的方法来创建数据库和数据库对象,这样就不需要使用任何其它的第三方软件,在Access中完成所有的事情。

评分

参与人数 1经验 +18 收起 理由
tmtony + 18

查看全部评分

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖2 订阅订阅

点击这里给我发消息

2#
发表于 2014-12-11 10:55:20 | 只看该作者
ODBC有它的优点,但的确存在这样的问题
使用ADO又无法使用ACCESS绑定的优点

点击这里给我发消息

3#
发表于 2014-12-11 10:59:12 | 只看该作者
关注中。。。
回复

使用道具 举报

点击这里给我发消息

4#
发表于 2014-12-11 11:02:23 | 只看该作者
ODBC连接 或ADO连接,如果不释放连接,链接的MDB会打开ldb
但如果断开连接,每次重连,也会增加开销

点击这里给我发消息

5#
发表于 2014-12-11 11:36:10 | 只看该作者
好帖子,可以把数据勾引到本地表,然后再绑定给报表嘛

点评

当然可以这么做,但复杂度很高,这是其一,其二,本地要建相应的数据表,应用程序会膨胀。  发表于 2014-12-11 11:43
6#
发表于 2014-12-11 12:48:12 | 只看该作者
拜读完毕,没看懂,不过也谢谢.

点评

说明你很少接触SQLServer数据库开发的问题,或者没有碰到过类似的困惑。呵呵  发表于 2014-12-11 13:00

点击这里给我发消息

7#
发表于 2014-12-11 12:48:37 来自手机 | 只看该作者
好帖要顶来自: Android客户端
回复

使用道具 举报

8#
发表于 2014-12-11 13:34:57 | 只看该作者
多年不关注MSSQL了
9#
发表于 2014-12-11 17:13:54 | 只看该作者
都是高手在出招阿.
10#
发表于 2014-12-16 08:03:38 | 只看该作者
学习了,不错!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 07:43 , Processed in 0.121803 second(s), 41 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表