这个现象是不是Delphi XE7 DataSnap 的BUG

Oraclers 2016-11-27 05:16:54
如下程序片段:
//服务器端:取得数据封包
function TPATDMServerMethods.GetDBData(Value: string): OleVariant;
var
adsQuery: TADODataSet;
dspProvider: TDataSetProvider;
begin
dspProvider := TDataSetProvider.Create(self);
adsQuery := TADODataSet.Create(self);
try
adsQuery.Connection := connDB01TFMS;
adsQuery.CommandText := Value;
dspProvider.DataSet := adsQuery;
adsQuery.Open;
Result := dspProvider.Data;
finally
adsQuery.Close;
FreeAndNil(adsQuery);
FreeAndNil(dspProvider);
end;
end;
//改变SQL以得不同表的数据
function TPATDMServerMethods.ChangeQuerySQL(Value: string): integer;
begin
Result := 0;
with adsDBQuery do
begin
Close;
if Value<>'' then
CommandText := Value;
Open;
Result := RecordCount;
end;
end;
//客户端 ,用服务器端第一个方法取得数据。
function GetData(const AcmdText: string; var ADataSet: TClientDataSet):boolean;
var
AData: OleVariant;
AProxy: TPATDMServerMethodsClient;
begin
Result := False;
if not PATDMDM.connPATDM.Connected then
PATDMDM.connPATDM.Connected := True;
AProxy :=TPATDMServerMethodsClient.Create(PATDMDM.connPATDM.DBXConnection);
try
try
AData := AProxy.GetDBData(AcmdText);
if not (VarIsNull(AData) or VarIsEmpty(AData)) then
begin
ADataSet.Close;
ADataSet.Data := AData;
ADataSet.Open;
Result := True;
end
else
begin
Result := False;
raise Exception.Create('获取数据失败,请重试!');
end;
except
on E: Exception do
begin
Result := False;
raise Exception.Create('连接远程服务器获取数据出错,错误:' + E.Message);
end;
end;
finally
FreeAndNil(AProxy);
end;
end;

//调用上面客户端函数
GetData('select * from dbo.TF_Users order by UserID',cdsUsers)

问题:当用户数据表TF_Users有一个类型为varbinary(256)字段(用于存放加密后的密码,数据库MS SQL 2005)时,当服务端程序第一次启动,客户端第一次连接后,调用上面的函数获取数据时都会出错,错误内容是:存取到无效地址在xxxxx,然后程序就死了,服务端服务也很难停止。
为了这个问题真是伤透脑筋。后经反复测试发现,只要表中不包含这个varbinary(256)类型字段,就不会出现上述错误。但我不明白为什么会这样?是不是Delphi XE7 的BUG?请高手说说。谢了!


...全文
700 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oraclers 2016-11-28
  • 打赏
  • 举报
回复
没有回复,顶下。
Oraclers 2016-11-27
  • 打赏
  • 举报
回复
在客户端用服务端改变SQL命令的那个函数也一样的错误。还有就是当客户端第一次出错后,再运行第2次就不会出错了。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧