本地数据库是否可以实现多用户操作?(200分)

  • 主题发起人 主题发起人 eastweast
  • 开始时间 开始时间
E

eastweast

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个有关于库存的程序。硬件环境为:没有域的Windows98对等网络。
程序要求可以在对等网络中的1-2台电脑上同时输入单据或者其他对数据库的
操作,而在所有的电脑上都能进行查询(当前的库存及其他信息)。数据库
准备采用paradox或Local Interbase,请各位富翁给些建议或者方法?

我以前看到过一个香港人写的程序,使用paradox数据库,可以实现多个用户的
同时操作。他的方法好像是作业过程中数据并没有真正提交提交到数据库,刚开
始提交到本地一个同名的数据库文件中,到一定时间再提交到文件服务器上的数
据库中。有没有人知道这种方法具体是怎样实现的?
 
建立共享文件夹,对同一个库进行操作!?
 
除了上面讲的方法外,还有没有更成熟的方法?
 
安装 SQL server 2000 的桌面版 (98下可以用的)

我怎么看你想用 分布式 数据 库?

你还是给一台机器 装 上 2000 吧 专业版 就可以了.

又稳定,你的数据 又安全 . 又不当机. 你的 数据 也不用 分布 式了.

也 方便 管理 了. 多好.
 
避免使用paradox,推荐用ADO+Access或者ADO+SQL2000
 
用本地库时访问表时要锁表,因为本地库不支持并发。
在另一台机器上访问本地表只要共享本地表目录,配
好BDE
 
我觉得不大好做,只有你把你的操作记录下来,然后再以并更新到数据库中。
 
用paradox的话
设置好bde
程序中不要使用ttable
用query操纵表的插入、修改
 
我明白你的意思,一个简单的网络数据库如果用专业的,像sql server 2000去写,成本高了。
其实delphi已经为我们实现小型网络数据服务准备好了,这就是delphi的魅力所在。请看下面:
1、服务器端(数据提供):你可以用delphi建立一个server程序(不要说你不会)或者建一个普通的任务栏程序
加入到启动组中,从而保证你的程序能够随windows启动。在此工程中,添加midas控件页的DataSetProvider控件,
再添加一个ADOconnection控件和ADODATSET控件,控件之间的数据关系为:
ADOconnection控件用于连接Access等桌面数据库;
ADODataset控件的Connection属性为ADOconnection;
ADODataset控件的CommandText:='select * from 你的数据表';//以上三步建立了对本地数据库的数据集
DataSetProvider控件的Dataset属性为ADODataset;//这样你的程序就可以开始提供数据输出了,其他属性设置参看帮助文件
2、客户端(数据接收端):新建一工程,添加midas控件页的ClientDataSet控件和DataSource及其他数据控件
ClientDataSet控件的RemoteServer属性为上面你的服务器端程序所在机器的IP地址;
DataSource的DataSet属性为ClientDataSet;
其他数据感知控件的属性为DataSource;//这样你的程序就成功连接到数据服务器,并获得数据。

不知这样是否能满足你的要求,试试吧,或许你能开发出自己的网络版数据库应用程序。
感谢delphi。
 
你同样可以实现先保存在本地再更新到数据库的过程。使用briefcase模型,ado就可以做出来。可以
查看数据的状态,如被添加,修改还是删除。

直接共享数据库带来的问题是很多的。所以建议像用楼上说的三层结构。
 
谢谢houxdd,ranking及各位,这两天我也正在思考这个问题,多谢指教,我县试试看。
 
delphi中没试过,用ACCESS97+DAO3.51+VB实现过,而且数据库还可以加密码,而我用ADO则无法实现多用户访问加密码的ACCESS97数据库。
把ACCESS数据库放在一台机的一个共享目录中,在程序中设置好路径即可。注意用户数不可多于10个!!!否则ACCESS可能会崩溃!!!
 
用mySQL数据库
 
Delphi5实现多层Client/Server应用程序(1)
 2001-04-11 11:05:05

  
  一、引言
  Client/Server是一种分布式的计算模式,与传统的基于主机的结构相比,具有较好的可伸缩性和较优的性价比。过去,Client/Server结构一般分为两层:客户端和服务器端,所有客户端各自实现自己的用户界面和应用逻辑。随着系统的不断扩展,这种两层的Client/Server模式逐渐暴露出它的缺陷,由于最终客户需求的千变万化,客户端可能会不堪重负,而客户端程序的过于庞大显然与分布式计算的思想背道而驰。解决上述问题的方案,就是采用多层的Client/Server结构。目前,通常按客户端、应用服务器端和DBMS服务器端三层,在这种结构中,客户端只用于实现用户界面,而应用逻辑则由应用服务器实现。

  二、应用服务器的创建
  要创建一个多层的Client/Server应用程序,首先要创建应用服务器。为完成与远程的客户双向交互,应用服务器需提供某种类型的Iprovider构件来实现,也可以直接通过几个继承于TDBDataSet类的数据集构件如TtableTquery的Provider属性实现。创建步骤如下:
  1. 远程数据模块(Remote Data Module)的创建
  使用File菜单上的“New Application”命令开始一个新工程,双击Multitier页面中的“Remote Data Module”图标,Delphi将要求指定类名,如图1所示。
  (1)在“Class Name”框内键入类名后(类名第一个字母不必是T),单击OK按钮,Delphi就在当前工程中加入一个远程数据模块。
  (2)TTable数据集构件的创建
  置入一个Ttable构件,设定它的属性databasename和tablename,然后设定active为true。
  (3)TdataSetProvider构件的创建
  置入一个TDataSetProvider构件,设定属性DataSet为Table1。
  至此,一个简单的应用服务器创建完毕。如图2所示。
  执行此程序,该应用程序将在系统中自动注册,今后的客户端程序就可以调用该应用服务器程序了。

  三、客户程序的创建
  从用户角度看,创建多层的Client/Server结构的“瘦”客户是用TclientDataSet构件实现的,并且通过TDCOMConnection构件与应用服务器端连接。创建步骤如下:
  1. 建立一个新的数据模块
  使用“File”菜单上的“New Application”命令开始一个新的工程,使用“File”菜单上的“New Data Module”命令加入一个数据模块。
  2. TDCOMConnection构件的创建
  把一个TDCOMConnection构件放到数据模块上,设置它的ServerName属性指定应用服务器名(在这里,应用服务器就是上面创建的名为MyDcomServer服务器程序。如果“瘦”客户与应用服务器不在同一个计算机上,还要设置ComputerName属性指定服务器所在的机器名。



  3. TclientDataSet文件添加
  把一个TclientDataSet构件放到数据模块上,设置它的RemoteServer属性指定TDCOMConnection构件,再设置ProviderName属性指定应用服务器中的DataSetProvider名,因此,“瘦”客户程序可以透明地访问远端数据库服务器上的数据。如图3所示。
  4. TdataSource文件添加
  把一个TdataSource构件放到Form上,设置它的DataSet属性指定TclientDataSet构件。
  5. TDBGrid构件添加
  把一个TDBGrid构件(也可以是其他数据控制构件)放到Form上,设置它的DataSource属性指定TdataSource构件,如果要在设计期间就看到数据的话,把TclientDataSet构件的Active属性设为True。
  至此,一个典型的“瘦”客户创建完毕,与传统的数据库应用程序相比,它不需要直接与数据库打交道,从而显得较瘦。

  四、DCOM配置
  如果在Windows NT环境下正常运行应用服务器,必须进行DCOM配置。配置方法如下:

  1. 运行NT服务器上的dcomcnfg程序,进行DCOM配置。
  2. 进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾,将默认身份级别改为“无”。
  3. 进入DCOM的总体默认安全机制页面,确认默认访问权限和默认启动权限中的默认值无EveryOne,如果不去掉EveryOne,应用服务器不能正常启动。
  4.在常规页面中,双击你的应用服务器,打开你的应用服务器DCOM属性设置。
  5.将常规页面中的身份验证级别改为“无”。
  6.位置页面中选上“在这台计算机上运行应用程序”。
  7.将安全性页面设置中,均选择“使用自定义访问权限”,编辑每一个权限,将EveryOne加入用户列表中。
  8.身份标识页面中,选择“交互式用户”。
  9.NT的GUEST用户不能禁用。

  结束语
  多层Client/Server结构的优势:
  1. 客户端只需要关注用户界面,而且与其他客户共享相同的数据访问模块,从而使客户端大大“减肥”。
  2. 客户端与应用服务器端一般分布于不同的计算机上,程序运行效率更高,处理事务的能力更强。
  3. 有利于提高数据的安全性,因为应用逻辑和最终访问数据库均由应用服务器端实现,而不是由多个客户直接访问数据库服务器,减少了网络上的数据流量。
 
建议使用Interbase数据训D上带,直接支持五用户。而且为0维护:)
 
houxdd的三层思想+mysql能够满足你的要求!
 
如果你用的是bde引擎是可以的.....在bde中建別名時邊到同一臺機了的數據源....
這個我在早期的單機版進銷存中就用過
 
对于多层数据库我是一个新手,有哪位大哥有这方面的教程网地址:
小弟在此非常感谢!!
 
为什么不采用D5自带的INTERBASE,只需要二天时间就可以掌握它和IBX。
 
后退
顶部