系统自带的DataSnap 三层架构DataSnap和 使用FireDAC组件的例子,使用TFDConnection链接并使用TStream方式传输、使用FireDAC控件完成调用的DataSnap的例子。  上面用的是sqlite数据库,
    问下,换上mssql数据库可以吗?我换成mssql数据库后,有以下报错。难道msSql数据库不支持Tstream方式传输吗,
----------
procedure TClientForm.GetTables;
var
  LStringStream: TStringStream;
begin
  FDStoredProcGet.ExecProc;
  LStringStream := TStringStream.Create(FDStoredProcGet.Params[0].asBlob);
  try
        if LStringStream <> nil then
        begin
          LStringStream.Position := 0;
          DataModuleFDClient.FDSchemaAdapter.LoadFromStream(LStringStream, TFDStorageFormat.sfBinary);
        end;
  finally
    LStringStream.Free;
  end;
end;
----------
以上过程执行到DataModuleFDClient.FDSchemaAdapter.LoadFromStream(LStringStream, TFDStorageFormat.sfBinary);  报的错

解决方案 »

  1.   


    最下边这个demo
      

  2.   

    系统自带的例子c:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\DataSnap\FireDAC
      

  3.   

    找到问题所在了,客户端需要select两个表,我之前都是select  所有字段,后来都只select主要的字段,可以查询成功了。高手指教说datasnap 通过stream传输大数据是分多个数据包传输,客户端接受需要进行处理才行,目前在进一步学习中。
      

  4.   

    delphi xe Datasnap使用FireDAC连接MSSQL2000
    客户端执行FireDAC连接时,总是报错,你又办法吗?:
    Exception EIPAbstractError in module at 00780958
    提示No peer with the interface with 
    guid {9BB0BE5C-9D9E-485E-803D-999645CE1B8F} has been registered.
      

  5.   

    如果要变更数据库的类型,可以通过连接的控件进行变更。
    比如通过TADOConnection连接,只要变更套接字,即可。
      

  6.   

    建议使用json传输数据。使用流问题比较多。