第一种,无状态取数据,返回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绑定。
大家觉得哪个方法好一些?
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绑定。
大家觉得哪个方法好一些?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货