又中断了,杯具的代码维护.
继续白皮书。
这下先专注提供数据库服务的DataSnap。按照白皮书的例子做好的服务端,然后接着做客户端,按照白皮书的顺序,先做只读的客户端,
TDataSource->TClientDataSet->TDataSetProvider->TSQLServerMethod->TSQLConnection,
这种连接方式中,TClientDataSet只要"ProviderName"中选择TDataSetProvider,"RemoteServer"不要设置(也不能设置,这个是以前版本用的) ;TSQLServerMethod中的"ServerMethodName"选择你要的服务方法(一般是自己在服务端定义的输出数据集,这里补充下,白皮书中的例子是自定义个服务器方法,然后再自动产生客户端代理方法输出。但是用了TSQLServerMethod组件后,客户端就不要代理方法输出了,这才合理,一般项目IDE中自动产生的都产生好了,要改的话,也不可能是把客户端代理方法输出单元删了再产生,只要用TSQLServerMethod组件就可以输出服务端原来的方法或后来新增的方法) 。启动 服务端,在设计时设置TClientDataSet的Connected连接为True ,错误出来了 "failure to connnect: Unable to load dbxmss.dll(ErrorCode 126). It may be missing in system path"。"dbxmss.dll"是TSQLConnection的"LibraryName"的值,这是找不到在什么地方了。电脑中搜索,果然system32中没有这个文件,倒是安装目录下的bin和bin64下有这个文件,2个目录下的文件名一样,只是大小不一样,看环境变量中的系统路径Path中也包含了这个目录,怎么还找不到呢?不纠结了,把这个"dbxmss.dll"拷到system32下,果然就行了。
下一步,再弄个能更新的客户端。按照白皮书说的,去了TDataSetProvider和TSQLServerMethod这2个组件,拖一个TDSProviderConnection出来,变成这样
TDataSource->TClientDataSet->TDSProviderConnection->TSQLConnection,这种连接中,TClientDataSet的"RemoteServer"和"ProviderName"都得用上了(嗯,有点混了,是的,混了,先不管,就先知其然不知其所以然吧),"RemoteServer"选择为刚才刚拖出来的TDSProviderConnection组件(嗯,"RemoteServer"名不符实了,要么放空,要么指向本地的,呵呵),"ProviderName"要手工输入了,输入什么呢?输入服务器的方法类,是类不是对象哟,一种TDSServerModule类,比如"TServerMethods1",也就是输出服务端方法的类。设置TClientDataSet的Connected连接为True,连上了。
后面准备是操作具体的数据,以及使用那个错误提示对话框。不过,想想还是先摸摸这些个组件及各种连接的内涵,搞不明白总觉得的堵的很。