设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: lwwvb
打印 上一主题 下一主题

MDB的十宗罪.

[复制链接]
跳转到指定楼层
1#
发表于 2005-8-5 02:41:00 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
如题.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2005-8-16 17:20:00 | 显示全部楼层
有,研究表明,用ACCESS做数据库最好还是用adp,用MDB不太好.先说说十宗罪: 1.表设计可以不用主键也可插入数据,养成表设计的坏习惯.2.没有临时表的概念.造成多用户临时处理数据的不便.3.数据表多时,关系线不可避免的乱.4.MDB的SQL在网络上比TSQL慢.5.非标准的SQL语法.6.嵌入式SQL害大于利.7.复合查询的重用性并不高.不如在ADP做存储过程或TSQL函数。8.C/S模式下数据库不安全.9.体积比ADP大.造成当掉的机会比MDB高.10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。讨论这个东西也有意义的,吸引MDB的人学ADP,也使大家认识到MDB的不足和问题。[em05]
3#
 楼主| 发表于 2005-8-25 18:38:00 | 显示全部楼层
2.没有临时表的概念.造成多用户临时处理数据的不便. 此条可通过用ado另创本地临时mdb库,再在库中创临时表的方式解决,只是速度上较慢.>>>>>>>>>>>>> 还不如临时表方便,链接断开时,临时表是自动删除的.6.嵌入式SQL害大于利. 此条末见得,原因同第四条>>>>>>>>>>>>>>> 实践证明,ADP用TSQL有一个好处,就是SQL与窗体元素的政党分家,有利于调试和重用性.调试SQL不用打开对应的窗体元素.而且,引用窗体元素多时,用参数的SQL绝对要比用MDB的SQL好看. 10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。 不一定,定位不同,mdb本就适合短平快,与adp比起来各有所用>>>>>>>>>>>>>>>> 很多的开发工具,都和ADP的方式类似,如.NET和VB.更换前台时,后台的存储过程和函数就不用怎么的变了.但是用MDB,很多东西都要重写.
4#
 楼主| 发表于 2005-8-27 04:53:00 | 显示全部楼层
1. 有些存儲過程及ADO查詢不知為何無法返回記錄﹐但MDB的通過查詢卻可以。>>>>我未遇过这种情况,很可能你是没有注意到TSQL与JET SQL的语法有些区别.很多人都会犯这种错.2. MDB可以連接各種數據源﹐統一管理比較方便﹐Refresh Link 又很容易。>>>>无可否认,ADP只能连接SQL 2K,如果要链接其它数据源,就要在代码中做, 这是ADP的弱点.3. 安全方面,因為我是在發布時﹐沒有表與查詢在MDB中(有也不會保存密碼)﹐連接語句都在代碼里﹐并且加了密﹐而且會根據不同用戶使用不同的用戶名與密碼訪問服務器, 所以安全可靠。>>>> 话说来,真正安全的数据库是3层或N层构架的数据库.ADP和MDB也是属于两层结构.>>>>密码保存在哪其实没有太大关系.一个MD5加密已经使密码面相全非了.>>>>另外,我不喜欢用MDB+ODBC+SQL 2K的一个原因是,ODBC很容易坏,我朋友发生过一次,我也发生过N次.都是很奇怪的,要重装系统才行解决.4. MDB可以使用工作群組加強前端的管理。>>>>这点,其实自己写一个更好的模块,也可以很好的做到这点.而且自己编写可以随心所欲.5. 我不用臨時表﹐一般用數組保存臨時數據。>>>>临时表毕竟与数组是有区别的.临时表可以与其它表一些做查询,数组不行.6. MDB使大家容易相互交流學習。使無數門外漢因此開始編程之路。>>>>MDB可以说是一块基石,但是我认为,MDB为什么容易交流学习,主要是简单,一个文件就可以运行.资料又多.当然,要更上一层楼,应该更上一步,向ADP进发.總之﹐作為數據庫﹐ADP只是SQL Server的管理前端+Access開發環境,不是數據庫。>>>>ADP的方式是ACCESS是前台,SQL 2K是后台.嘿嘿,不要忘记.MDB+ODBC+SQL 2K的方式,其实不过也是一样. MDB是即可做真正的數據庫﹐又可以只做開發工具﹐不做數據庫。所以我認為用Access MDB做開發工具是好過ADP的﹐其不僅具有一般開發工具的功能﹐且具有更靈活強大的數據調試及用戶管理功能。>>>>那么ADP也是真正的数据库哦.就算没有SQL 2K,也可以做开发工具.MDB中的DATAWINDOWS和ADP的DATAWINDOWS也是一样的用哦.>>>>有一点,现代的数据库开发工具,都是拆分为前台+后台的方式,象VB,DELPHI,.NET等. 其实开发工具+数据库二合为一的东西已经过时了,就如VFP一样.听说它的开发速度很高.但是局限性很大.VFP如果要用SQL 2K做数据库后台,也要用ODBC的方式.>>>>有一点意味着,软件方面,数据库和开发工具是分离了.数据库是做数据库的东西,开发工具是做开发工具的东西.二合为一,只是小,并不一定是好.
5#
 楼主| 发表于 2005-9-1 00:50:00 | 显示全部楼层
你上面的这个东西是用来干什么的?而且,你是想把数据返回客户端吧,对不对?
6#
 楼主| 发表于 2005-9-2 06:12:00 | 显示全部楼层
嘿嘿,你的ADO还是菜了点.存储过程改为这样:Alter PROCEDURE dbo.Identi

ASbeginSELECT   IDENTITY (int, 1, 1) AS AA,*

INTO         #tempA

FROM           ABCselect * from #tempAendADO求#tempA的内容  Dim r As Recordset

  



  Set r = GetTSQLProc(".....")    ''''执行存储过程,返回记录集到r

  



  Set r = r.NextRecordset()



  Debug.Print r.GetString()      ''''可以看到#tempA的内容[em05]
7#
 楼主| 发表于 2005-9-2 18:54:00 | 显示全部楼层
.nextRecord是求下一个记录集。当你的存储过程有N个select语句时,你就要用到这个求得下一个,下两个记录集...不用.nextrecord不是报错,而是你的第一个select语句的是不会返回记录的,它的记录集是关闭的。还有一点,当你双击ADP的存储过程时,只是默认显示第一个记录集。如果你在SQL 2K的查询分析器去运行存储过程,就会发现N个记录集。最后一点,如果真的是想提高自己,请放弃ACCESS。向delphi或.net发展。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 00:05 , Processed in 0.084082 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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