第一种,无状态取数据,返回OleVariant(BCB代码) 
OleVariant TRDMBase::GetDbDataToVariant(const AnsiString& sSql)
{
OleVariant vrtDbData;
std::auto_ptr<TSQLDataSet>pDSTPub(new TSQLDataSet(this));
std::auto_ptr<TDataSetProvider>pDSPPub(new TDataSetProvider(this));
pDSTPub->SQLConnection = FSQLConnection;
pDSTPub->CommandText = sSql;
if(pDSTPub.get())
{
  pDSPPub->DataSet = pDSTPub.get();
  try
  {
   pDSTPub->Open();
   vrtDbData = pDSPPub->Data;
  }
  catch(Exception &E)
  {
   svrlog("DataSet Open Error:%s",AnsiString(E.Message).c_str());
   vrtDbData = varNull;
  }
  pDSTPub->Close();
}
return vrtDbData;
}
第二种:客户端使用TDSProviderConnection和服务端的TDataSetProvider绑定。
大家觉得哪个方法好一些?