滋阴壮阳冬瓜汤
Access,有两个问题,这么多年,我始终解决不了。一个是窗体动态加载
一个是多线程 0123456789
朱老师,用链接表连接服务器Access数据库,客户端是把整个数据库读过来呢?还是只读取需要用到的那个表?
zhuyiwen
总之比较慢,可以通过选项设置每次读入的数据
0123456789
哦 0123456789
但是,服务器上并没有安装Access,也就是服务器端并没有数据库引擎,它是如何决定只返回所需的表呢?
0123456789
那不得把整个数据库都读过来了再挑选吗
zhuyiwen
建议用ADO,想读多少就读多少
链接表有快速开发的优势
zhuyiwen
要实现服务器端查询,需要升级数据库为服务型数据库
0123456789
服务器没有数据库引擎,ADO读取数据,怎么个原理呢?
滋阴壮阳冬瓜汤
省写代码,不是目的呀,你封装一个多类型数据库,也一样,可以省很多代码呀。关键是可控,和可接受的性能
0123456789
那就是要在本地处理数据库啦,对吧
既然是要本地处理,那是不是得先把整个数据库读过来,然后再处理呢
滋阴壮阳冬瓜汤
不是,windows已默认安装sql server的客户端驱动。客户端驱动和服务端sql server相当于两个winsock
zhuyiwen
也就是远程的Access数据库,只是相当于把共享文件模拟成本地文件夹
zhuyiwen
所以,Access数据库文件也可以存放在linux文件服务器中进行共享,不需要linux文件服务器有什么引擎
0123456789
这么说,实际上服务器Windows已经有数据库处理工具了,服务器Windows先处理好,再返回处理结果给客户端,是吧
zhuyiwen
你要搞清楚的是链接表方式连接后台Access数据库,与服务器无关
滋阴壮阳冬瓜汤
ado也好,链接表也好(其实是Odbc),调用sql server客户端,与服务端sql server进行通信。
如果你用的mySQL,或firebird,oracle等非微软数据库,你必须自己安装客户端驱动。
zhuyiwen
你只要理解共享文件夹就是文件夹
网络只是延伸
0123456789
服务器没装Office,也没装SQL Server呢
滋阴壮阳冬瓜汤
服务器没装office没关系,但没装sql server,想用slq server门都没有。
zhuyiwen
你所mdb当成就是一个文件就完了,不管它在哪
滋阴壮阳冬瓜汤
那没关系,因为微软已经自带mdb驱动,你想卸载也卸载不掉
zhuyiwen
你把mdb当成就是一个文件就完了,不管它在哪
0123456789
我的问题是,客户端是否需要从服务器把整个mdb读过来,然后在客户端处理
0123456789
就是不明白,如何实现只读取部分的
滋阴壮阳冬瓜汤
mdb就是一个文件,ldb是一个连接通道。它就是通过通道来进行通信的
excel也有呀,难道你没有见过吗?
zhuyiwen
因为链接表,链接的是表,通常打开一个链接表,首先会读取架构,默认读取1000条记录
王子
比如一个带条件的查询,是直接处理好条件再读数据过来么?还是读整表过来再在本地做条件处理?
zhuyiwen
如果在链接表的基础上做查询,那就不一样了
主席
文件型数据库就相当于吃自助餐的食材,东西都摆在那里,要吃的话就得自己去弄,没人给你帮忙。 服务型数据库就相当于去五星级酒店吃点菜,你只管说我要吃这个,我要吃那个,你动作搞快点,我饿得很。五星级酒店服务的当然好,一会菜就上齐了。
王子
比如1000条记录的表,条件查询后选500条,那么这个数据传输是1000还是500
zhuyiwen
本质上,Access只是一个本地数据库管理系统
zhuyiwen
尽管,链接表可以延伸Access的处理能力,但最终还是通过本地的jet引擎来处理数据,所有的链接表都会在jet引擎中模拟成Access本地的数据表
因此,jet引擎很强大,但成本也很高
王子
如果数据不来本地,本地又是如何知道我该选取哪些数据的
主席
你首先准备了清单的呀,要哪些东西。然后自己走路去仓库里面,搭了楼梯去一个个从架子上抱下来。
zhuyiwen
对,数据不来本地就处理不了
这就是jet引擎
王子
那其实还是1000条数据先过来么
然后筛选500
zhuyiwen
如果在一个链接表上进行筛选,那么jet引擎会把这个表的所有数据都读过来
zhuyiwen
那是不受1000条记录铂尔曼的
那是不受1000条记录限制的
0123456789
数据库mdb文件放在服务器上,就像一个货柜放在货场上
链接表,就是告诉我如何从我门店到达货柜,并且给我钥匙开货柜的门
我这样理解对吗
主席
如果你用服务型数据库,那么你只需要在公司里面说,我要这些,要那些,仓库里面自然有先进的设备和管理尽快的就拿出来给你
服务型的还包给你送上门
王子
服务数据库提供的是服务接口,你只要告诉它指令即可
主席
不是
服务型的,有仓库里的许多人和设备,为你取货随时做好强大的准备
王子
就跟打个电话送快递一样
那文件型的
我的工人派过去?
zhuyiwen
因为,如果,数据库数据量不大,用链接表很好
但如果数据量很大,建议升级数据库为服务型数据库,并使用传递查询来处理数据,而不是链接表
主席
电话都不打,心神领会
文件不大,就相当于东西不多,随便找间房子就放下了
自己找找也很快能找到
主席
但是你东西上了百万种以后,你自己找起来就没那么快了,就需要服务
0123456789
现在,我门店需几件货物,
我是去要把整个货柜搬过来慢慢翻找呢?
还是只需要从货柜里把装有那些货物的包裹搬过来翻找?
zhuyiwen
链接表,就是Jet引擎模拟出来的本地表,呵呵
主席
有毛的工人
文件型的,就是自己走路过去
或者是爬过去
哪里还有工人
有工人,就是有服务了
0123456789
数据库mdb文件放在服务器上,就像一个货柜放在货场上
链接表,就是告诉我如何从我门店到达货柜,并且给我钥匙开货柜的门
我这样理解对吗
现在,我门店需几件货物,
我是去要把整个货柜搬过来慢慢翻找呢?
还是只需要从货柜里把装有那些货物的包裹搬过来翻找?
主席
都可以啊
你可以把所有货柜都拿出来全部挨着翻一遍
主席
也可以先想好自己要拿啥,然后列个单子,按柜子的索引去找,都可以
滋阴壮阳冬瓜汤
王子,主要是你不了解通道,通道是很重要的通信方式
王子
一直只知道用,不知道原理看见你们正好谈起,就问下 主席
因为自己公司离仓库远,走路去很不方便,所以很多文件数据库都放在本地,比如就在办公室隔壁就是个小仓库
就相当于MDB文件放在电脑的D盘一样的
主席
也有拼命要把小仓库设在远处的,就比如ACCESS数据库拿来做远程使用,不是不行,而是很多麻烦
王子
如果对方有驱动我是可以理解,对方驱动可以完成些事情
0123456789
【大学】滋阴壮阳冬瓜汤(3308069522) 11:36:40
每一台电脑都有mdb驱动
就算没有安装Office,只要安装了windows,就会有mdb驱动,是吗?
王子
只是想知道底层到底在干些啥 滋阴壮阳冬瓜汤
通道是这样的,当通道A端输入指令,通道B端原样接收指令,然后返回数据,通道A端接收数据。
0123456789
就是说,服务器端那边有个仓管员
滋阴壮阳冬瓜汤
通道可是同一台电脑的两个dll,也可以是不同电脑的两个dll
zhuyiwen
@王子 可以用linux搭建一个mySQL数据库
zhuyiwen
@王子 可以用linux搭建一个mySQL数据库服务器
王子
其实问题很简单的,文件型数据库,如果本地和远端都有驱动,有通道解决,如果远端没有驱动,没有服务,就是个文件,是通过什么来做的,过程是咋样
滋阴壮阳冬瓜汤
io输出。只要是系统都要有io输出功能
zhuyiwen
我发现你们有点偏
能有能力搭建服务器,为什么还要选择文件型数据库呢?
用SQL数据库服务器不好吗?
免费的有很多,mySQL, Oracle, DB2...
王子
过程是咋样,比如我查某张表,然后代码都写好了,在我打开那个记录集的代码执行时候,都做了些啥
滋阴壮阳冬瓜汤
linux我试过,事实上,我也不知道linux能跑mdb?
我没试过
王子
我只是好奇文件型数据库查询的时候他们在底层干些啥 王子
我也不研究,看到你们正好谈起,所以问问没啥了 0123456789
是啊,其实是可以不用管这些东西的