原先有个C语言编写的程序,不知道怎么移植到X3平台,请老大们帮忙看一下。(二进制流在SQLServer中以Image格式储存)
int CSmsDBFuncs: B_sel_YC5minute( int bjlxid,int bjid, int bjcsid,CString sqldate ) //SQLServer中的表名为YC5minute+年月日参数,例:YC5minute20070802
{
int ret=0;
CString strsql;
CString strid;
CString strfloat;
_RecordsetPtr m_prs;
_bstr_t bstr_dbValue;
_variant_t var;
CString strdbval;
float fminvalarr[2000];
int nbstr_len;
int nbstr_len_loop;
int i;
CComBSTR bcomstr_dbval;
Content = "";
strsql=pcabcommdef->pcabPowerSmsSql->sel_YC5minute;
try{
strid.Format("%d",bjlxid);
strsql.Replace( "$BJLXID",strid );
strid.Format("%d",bjid);
strsql.Replace( "$BJID",strid );
strid.Format("%d",bjcsid);
strsql.Replace( "$BJCSID",strid );
strid = sqldate.Left(8);
strsql.Replace( "$DATE",strid );
m_prs=pcabDBInfos->pConnSCADA->Execute(_bstr_t(strsql), NULL, adCmdText);
if( m_prs ){
ret=1;
if( !m_prs->RecordCount ){
m_prs->Close();
ret=0;
}
if( ret>0 ){
if( !m_prs->adoEOF ){
var=m_prs->GetCollect("MinVal");
if(var.vt!=VT_NULL)
{
bstr_dbValue=m_prs->Fields->GetItem("MinVal")->Value; //该二进制流字段名为MinVal
bcomstr_dbval.AppendBSTR( bstr_dbValue.GetBSTR() );
nbstr_len = bcomstr_dbval.ByteLength();
memcpy( &fminvalarr,bcomstr_dbval.m_str,nbstr_len ); //拷贝制定大小的内容
nbstr_len_loop=nbstr_len/4;
for(i=0;i<nbstr_len_loop;i++){
strfloat.Format("%f",fminvalarr);
Content.Append( strfloat+" " );
}
}
m_prs->Close();
}
else{
m_prs->Close();
ret=-1;
}
}/* END:: if( ret>0 ){ */
}
else{
ret=-1;
}
}
catch (_com_error e)//异常处理
{
ret=-1;
}
Content += "\n";
return ret;
} |