Delphi中两个BUG的分析与修复
在使用Delphi 7进行三层数据库开发时,遇到了两个小问题,通过反复试验,终于找出了Delphi 7中的两个小BUG并进行了修复(好像Delphi 6中也有相同的BUG),撰写此文与大家一起分享成功的喜悦。我也是初学Delphi,文中一定存在不少说的不对的地方,还请各位朋友多多指正。
BUG1.传参时中文被截断的问题:
BUG再现的方法:
后台用SQL Server 2000,里面有一个XsHeTong表用于试验,您可以根据您的实际情况进行调整。
先创建一个数据服务器:新建项目,创建一个远程数据模块,上面放置ADOConnection、ADODataSet、DataSetProvider各一,并做好相应设置,其中ADODataSet的ComamndText留空,并把它的Option中的poAllowCommandText设置为True。编译运行。
再创建客户端程序:新建项目,在窗体上放置DCOMConnection,连上前面上创建的数据服务器,再放置一个ClientDataSet,把它的连接设成这里的DCOMConnection,并设置它的ProviderName为上面的服务器上的DataSetProvider的名字。最后放置DataSource和DBGrid各一并作相应设置用于查看结果,再放置一Button用于测试。
在Button的OnClick中写下类似于下面的代码(这里我用了XsHeTong的表和它的两个字段HTH(char 15)、GCMC(varchar 100),您可以根据你的实际测试情况进行调整):
with ClientDataSet1 do
begin
Close;
CommandText := 'Insert Into XsHeTong(HTH, GCMC) values(:HTH,:GCMC)';
Params[0].AsString := '12345';
Params[1].AsString := '会截断的中文字';
Execute;
Close;
CommandText := 'Select * from XsHeTong';
Open;
end;