应用程序用delphi做,用InterBase做后台数据库,应用程序和数据库在不同的电脑中。我现在是这样做的:
两台电脑网线直连。服务器端: 做服务器的机子IP设为192.168.0.11.ping 192.168.0.1,连接正常
ping 192.168.0.2,连接正常
2.服务器上安装了InterBase7.0,生成数据库及表格。
3. 运行服务器代理ScktSrvr.exe,默认端口是211,使用TCP/IP连接方式。
4.服务器Remote Data Module中使用IBDatabase1,IBTable1,IBTransaction1,DatasetProvider1组件,设置如下:
ibdatabase1.databasename:=在服务器机子的绝对路径\我的数据库;
ibdatabase1.Connected:=true;
ibdatabase1.DefaultTransaction:=ibTransaction1;
ibTransaction1.DefaultDatabase:=ibdatabase1;
ibtransaction1.Active:=true;
ibtable1.database:=ibdatabase1;
ibtable1.Transaction:=ibtransaction1;
ibtable1.TableName:=我的数据表;
ibtable1.Active:=true;
datasetprovider1.DataSet:=ibtable1;
5.编译并运行。
以上没有出现问题。客户端:
1.客户端机子IP设为192.168.0.2
2.ping 192.168.0.1,连接正常
ping 192.168.0.2,连接正常
3.程序中使用SocketConnection1,ClientDataSet1,DataSource1,DBGrid1组件
4.存在问题:
SocketConnection1属性中Port设为211
属性ServerGUID设为{9C512CCB-638F-4A02-B4EF-2E275C1612D9} 这是从Server_TLB.pas中数据模块类名后复制来的
属性Address设为192.168.0.1
属性Host为空
属性ServerName下拉框中没内容,无法选择,不知为何。
属性Connected为TRUE,连接成功。从服务器端运行的ScktSrvr.exe中能看到客户机连接到服务器。
这里把Host选为服务器计算机名称,也能Connectde为TRUE,但Address和Hose无法同时设置,设置一个时,另一个自动清空,不知为何。
5.到这里无法继续了:
ClientDataSet1属性RemoteServer设为SocketConnection1
属性ProviderName下拉框是空的,无法选择,
所以属性Active设为True时出现Error提示:ClientDataSet1: Missing data Provider or data packet.
主要就是这个问题,选择不到ProviderName,就无法连接。
(服务器端和客户端都在同一台机子上时,ProviderName可正常选择服务器端定义的datasetprovider1. 但无论何时ServerName总是空的。)不知道是不是客户端或服务器端哪里没有设置好。这些都可能是那里的问题呀,还望各位耐心赐教,不胜感激。
两台电脑网线直连。服务器端: 做服务器的机子IP设为192.168.0.11.ping 192.168.0.1,连接正常
ping 192.168.0.2,连接正常
2.服务器上安装了InterBase7.0,生成数据库及表格。
3. 运行服务器代理ScktSrvr.exe,默认端口是211,使用TCP/IP连接方式。
4.服务器Remote Data Module中使用IBDatabase1,IBTable1,IBTransaction1,DatasetProvider1组件,设置如下:
ibdatabase1.databasename:=在服务器机子的绝对路径\我的数据库;
ibdatabase1.Connected:=true;
ibdatabase1.DefaultTransaction:=ibTransaction1;
ibTransaction1.DefaultDatabase:=ibdatabase1;
ibtransaction1.Active:=true;
ibtable1.database:=ibdatabase1;
ibtable1.Transaction:=ibtransaction1;
ibtable1.TableName:=我的数据表;
ibtable1.Active:=true;
datasetprovider1.DataSet:=ibtable1;
5.编译并运行。
以上没有出现问题。客户端:
1.客户端机子IP设为192.168.0.2
2.ping 192.168.0.1,连接正常
ping 192.168.0.2,连接正常
3.程序中使用SocketConnection1,ClientDataSet1,DataSource1,DBGrid1组件
4.存在问题:
SocketConnection1属性中Port设为211
属性ServerGUID设为{9C512CCB-638F-4A02-B4EF-2E275C1612D9} 这是从Server_TLB.pas中数据模块类名后复制来的
属性Address设为192.168.0.1
属性Host为空
属性ServerName下拉框中没内容,无法选择,不知为何。
属性Connected为TRUE,连接成功。从服务器端运行的ScktSrvr.exe中能看到客户机连接到服务器。
这里把Host选为服务器计算机名称,也能Connectde为TRUE,但Address和Hose无法同时设置,设置一个时,另一个自动清空,不知为何。
5.到这里无法继续了:
ClientDataSet1属性RemoteServer设为SocketConnection1
属性ProviderName下拉框是空的,无法选择,
所以属性Active设为True时出现Error提示:ClientDataSet1: Missing data Provider or data packet.
主要就是这个问题,选择不到ProviderName,就无法连接。
(服务器端和客户端都在同一台机子上时,ProviderName可正常选择服务器端定义的datasetprovider1. 但无论何时ServerName总是空的。)不知道是不是客户端或服务器端哪里没有设置好。这些都可能是那里的问题呀,还望各位耐心赐教,不胜感激。
解决方案 »
- webbrowser问题,等待高手解答。再线等。
- 系统只能在局域网内使用,但客户希望外出也能录数据回到公司再把数据导入系统中,请问大家有什么好的方法吗?
- 我想问问多字段查询的问题
- 怎么才能使得 ctrl键,delete键,ctrl+alt+delete等组合键失效
- ShellExecute 启动foxmail 难得有个bug,大家探讨一下,解决有高分送(120)
- 六一节前的最后一个问题!
- 我得罪谁了啊,KingCOMnet你站出来,为什么这么做?
- 仓储管理系统
- 关于邮件空件NmSTMP的问题!
- ToolButton上如何加入图片?
- 界面上放了几个TImage,如何让被点击的那个Image看起来与其它几个有所区分?
- Delphi 多线程帮助
在所有类似编程语言中是最具特色的。但在很多Delphi的参考资料中对这一点介绍较少,而
它却是Delphi开发Client/Server程序最有用和最强大的工具。Delphi安装完毕后,会产生一
个InterBase数据库类型的Local Server,有了它,可以编写Client/Server数据库程序,而无
需一个真正的后台数据库服务器;Local Server虽然在本地计算机中运行,但它的确扮演了一
个数据库服务器的角色,应用程序在Local Server上运行和在服务器上运行没有什么不一样
,这对于开发Client/Server数据库程序来说是很重要的,可以避免在运行着数据库的服务器
上开发程序带来的危险性。同时,Local Server上的数据库管理更加简洁,可以加快应用程序
的开发速度。下面简单介绍一下利用Local Server开发Client/Server程序的方法及适应性
方面的问题,供大家参考。配置数据库
为了在Local Server上开发数据库程序,首先必须在Local Server上安装数据库,让它模
拟完成数据库服务器的各种服务,对你来说就像使用一个SQL Server或Oracle一样。方法如
下:1.查看控制面板的ODBC设置程序,确保Data Source项里有InterBase(Borland InterBa
se)这一项。然后在Delphi程序组里执行Server Manager程序,完成数据库的维护工作,其中
有一项是用户安全管理。用菜单Tasks中的User Security命令创建新用户,生成用户名和密
码,以备在创建新数据库时用。2.运行Delphi软件包中的Windows ISQL,执行CREATE DATABASE命令,生成一个新数据库
,假设命名为TEST,用户名和密码要和第一步中产生的用户内容一致,然后在SQL STATEMENT中
打入"CREATE TABLE NEWTABLE(NAME CHAR(10),TELE-PHONE CHAR(14))"命令,用RUN执行,接
着可以用INSERT INTO NEWTABLE命令插入几条试验记录为编程时调试用,再退出ISQL。3.在第2步完成以后,在C:\IBLOCAL\BIN目录下可以发现新生成的数据库文件TEST。接着
运行Database Engine Configuration程序,在对Aliases的操作中,建立一个新的Alias,这个
Alias的ALIAS TYPE是INTER-BASE,New Alias Name是TEST,将SERVER NAME改成"C:\IBLOCAL
\BIN\TEST",其它参数内容可以按照需要进行修改,然后存盘退出。这一步也可以在Databas
e Desktop中完成。编程
现在可以编写Client/Server数据库的程序了。1.运行Delphi程序后,新建一个PROJECT,在Form1上放置Data Access构件Data Source1
和Query1,以及Data Control构件DBGrid1和DBNavigatorl等。2.在Data Sourcel的DataSet属性中填Query1,在Query1的DatabaseName属性中填TEST或
在属性的下拉框中选TEST,在Query1的SQL属性中键入SQL查询语句如SELECT* FROM NEWTAB
LE。3.然后在DBGrid1和DBNavigatorl的DataSource属性中填DataSourcel,最后,将Query1的
Active属性置为TRUE,这时会出现数据库注册对话窗,只要输入的用户名和密码无误,DBGrid
1中将出现Query1查询的结果,也可以在运行时用Query1的OPEN方法来打开查询得到结果。如
果将Query1的RequestLive属性设置为TRUE,则不但可以查询数据库,而且能对数据库进行插
入、更新及删除等操作,根本不需要编写SQL语句。
至此,一个最小而又完整的Client/Server数据库程序就完成了。只要作适当的修改,就
可以编写各种实用的数据库应用程序。可移植性
用Delphi开发Client/Server数据库,大家最关心的就是可移植性,而这一点,恰恰就是D
elphi和InterBase的Local Server的优势。在Local Server上开发完一个数据库程序后,只
要在控制面板中ODBC的SETUP中建立真正数据库服务器的驱动器,然后在Database Desktop中
生成利用该驱动器的数据库别名,并对Query或Table的相应属性略作修改,就可以在服务器上
运行了。这些改动仅仅花费几分钟时间而已,其他基本上不必改动。但要注意,各种不同的数
据库服务器的SQL语言是有所不同的,如果你用的是标准的SQL语句而不用扩展功能,那么就没
有什么问题,否则需要参考相应数据库服务器的SQL语法。
ZerosDbo
Fibplus
Remobject AnyDAC 都可以Delphi 自带的 TIBConnection
1、放置一个IBDatabase控件和一个IBTransaction控件(位于InterBase页);
2、设置IBDatabase的相关属性
设置DataBaseName属性(选择数据库文件——扩展名.GDB的)
设置DefaultTransaction指向IBTransaction控件;
设置Params属性的如下:
user_name=sysdba
password=masterkey
设置LoginPrompt属性为False
设置Connected属性为True;
3、双击IBTransaction控件,选择“Read Committed;
4、在窗体中放置TIBTable控件、TDataSource控件;
5、设置TIBTable控件的相关属性
设置Database属性指向IBDatabase1;
设置TableName属性,选择相关的数据表;
设置Active属性为True
6、TDataSource控件的DataSet属性,指向TIBTable控件;
7、在窗体中放置TDBNavigator控件和TDBGrid控件(位于Data Controls页)
8、设置TDBNavigator控件的DataSource属性,指向TDataSource控件;
9、设置TDBGrid控件的DataSource属性,指向TDataSource控件;
10、点F9运行,即可进行正常的数据库操作了。
你说的方法我实现过了,那是单机可是实现,我想要的是从本机远程访问另一台服务器上的数据库,我存在的问题是无法连接远程服务器上的数据库,具体问题是TClientDataset组件的privderName属性是空的。