Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]有关JET、ODBCDirect、SQL的一些疑问

听风  发表于:2009-04-14 09:29:02  
复制

看了朱亦文老师的一篇文章(http://www.accessoft.com/blog/article-show.asp?userid=61&Id=1655),深受启发。

于是也想远一点看ACCESS,这样才看得清她的全貌,心里也有数点,不然老是一头雾水。于是有了下面的一些看似很理论化的东西:

问题1:什么是服务器型数据库? 这里的“服务器型”是啥子意思?JET是不是“服务器型”的?如果不是,为什么?“服务器型”的数据库与非“服务器型”的数据库有什么不同?(注:朱老师原文里的"服务型数据库"可能为"服务器型数据库"的笔误-竹笛)
问题2:不小心在逛书店里看到有很多数据库编程案例,写着"****数据库(VB+SQL SERVER 2000)"、"####数据库(VB+ACCESS 2003)",估计这里的"VB"指的是前台,"SERVER 2000"或"ACCESS 2003"指的是后台了。那如果拿我们的UMV去对应的话,因为前台后台都是ACCESS,那我们的结构是不是"ACCESS 2007+ACCESS 2007"或"ACCESS 2007+JET"或"ACCESS 2007+ODBCDirect"?(不要说我钻牛角尖哦,嘻嘻)

问题3:因为ACCESS可以用JET工作区,也可以用ODBCDirect工作区,我们在应用中如何来选择啊?因为二者有些对象是相同的,比如:Recordset,QueryDef在两个工作区内都有,而且貌似ODBCDirect的对象是JET的对象的子集。

问题4:ACCESS的查询里有用到SQL,我很想知道ACCESS里SQL是哪里来的,为何ACCESS能识别,是来自JET或ODBCDirect吗?或者说,我们在ACCESS里用到的SQL事实上就是JET SQL或ODBCDirect SQL?很粗地翻了下书店里的SQL SERVER的书,发现ACCESS里的SQL跟SQL SERVER里的SQL有相似的地方,但并不完全相同。

问题5:DEV是不是有什么深刻含义啊?UMV教程起名好像动不动就ACCDEV的样子,朱老师在文章里也戏称"MyJETDev"什么的。

敬请各位老师、同学、长辈、先进予以指点。尽管可能很不敬,但我还是想说:希望是能针对我的问题逐一解答,跳着回答的话我很难设置最佳答案的。多谢。

 

Top
竹笛 发表于:2009-04-14 09:57:43

问题5:DEV是不是有什么深刻含义啊?UMV教程起名好像动不动就ACCDEV的样子,朱老师在文章里也戏称"MyJETDev"什么的。

答:DEV是英文Development(开发)的前3个字母



曹光耀 发表于:2009-04-14 10:22:27
听先生,你能提出以上问题(见解),说明你已有(Access、SQL、VB、 ODBC...)相当多的学识,相比之下我就提不出这样的问题
本来回帖是为了解决问题,对不起没能为你解决问题!不过我从你那看到了方法...

朱亦文 发表于:2009-04-14 19:20:28

npc12345 , 你好。

 

你提的问题很深刻。

 

一、所谓“服务型数据库”,就是指能提供数据库服务的数据库服务器,使用数据的人不需要数据是如何存储、存储在哪,你只要向这个服务提出服务请求,服务就会返回你所需要的。Microsoft SQL Server就是这么一种数据库服务。这种服务多属于网络服务。对于Microsoft SQL Server而言,向服务器提交的请求就是通过T-SQL语言实现的。记住,关键字“服务”。也就是说,如果你在某台机器上即使你安装了Microsoft SQL Server,如果没有启动“MSSQLSERVER”服务,你仍然无法访问。

 

二、Jet只是一个Microsoft的桌面数据库引擎,它不是一种服务,它相当于mdb数据库文件的数据解释器,当然,它也有数据库操作语言Jet-SQL。也可以说Jet数据库是文件型数据库。例如,如果你把mdb数据库分拆成前后端数据库,把后端放到网络上某台机上的共享文件,而形成多用户操作,事实上,这样的架构,可以称为多用户数据库管理架构,而存放后台数据库的那台机器并不提供数据库服务,仅仅提供的是文件共享服务(又称为SAMBA服务),这样的一台机器既可以是Microsoft Windows系统,也可以是Linux系统或者是Novell文件系统,只要能提供共享文件夹就行,也就是文件存储,而这时前台数据库mdb正是依靠前台机器的Jet引擎来打开共享文件夹上的后台数据库mdb文件。这个时候所有的数据处理都由前台机器的Jet引擎来完成的,与此不同时,如果使用的“服务型数据库”,则数据处理都是由安装有服务的那台机器来完成的。

 

三、开发工具与数据库

VB + SQL Server 2000:由VB来开发SQL Server数据库应用,即可以开发前端客户程序,也可以开发后台(当然是指多层结构)。如果只开发客户端,这种模式称为C/S(客户/服务器)模式,服务器的开发使用T-SQL,在数据库开发中完成。如果还VB开发后台,那么,这就形成了多层模式,物理上表示为:VB客户机 + VB中间层服务器机器 + 数据库服务器机器(包含开发的T-SQL程序)。

VB + Access 2003:这种说法可能包含两种可能。其一,使用VB作为开发工具,数据库为mdb数据库(或者称为Jet数据库),这种方式通常是单用户模式,采用的是桌面文件型数据库。其二,同时使用VB和ACCESS2003作为开发工具,至于数据库是什么都可以。

 

四、你的“问题3”很有意思,ODBCDirect你可以认为是VC的专利吧,在Access中根本就用不了,通通都是通过DAO来完成的。因为它已经被DAO封装了。

 

五、Access中用到的查询是Access一种数据库对象,它用来Access对数据库的数据进行处理,而它使用的语言正是Jet-SQL,从Access 2000开发,可以使用两标准即SQL89和SQL92,默认是SQL89标准,SQL Server同样也是使用SQL语言,只是它的标准是SQL92,当然它们非常类似。但引擎的功能和语言的复杂度不是同日而语的。

 

六、所谓“Dev”,呵呵,只是我随意冠写一个名字。意思是如果你足够强大,你完全可以不需要使用Access,光靠Jet引擎,你也开发的mdb数据库应用,而冠以自己的品牌,而不必叫Access。呵呵

 

说了这么多,不知是否释疑。不过这些都只是我的个人看法,并不代表完全正确。



听风 发表于:2009-04-16 08:18:53
多谢朱老师。

总记录:4篇  页次:1/1 9 1 :