起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 150|回复: 4

[结贴][请求]关于数据库存的二进制流转Float的C代码,在平台上怎么实现?**

[复制链接]
发表于 2007-10-14 09:28:24 | 显示全部楼层 |阅读模式
原先有个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;
}
回复

使用道具 举报

 楼主| 发表于 2007-10-15 17:21:19 | 显示全部楼层
老大们~  怎么没人顶啊
回复 支持 反对

使用道具 举报

发表于 2007-10-15 17:24:28 | 显示全部楼层
对C不熟悉,不知道怎么弄
不过,我可以提供一个思路,反正已经有代码了,做成dll,导入到平台上调用
回复 支持 反对

使用道具 举报

发表于 2007-10-22 17:23:49 | 显示全部楼层
楼主,可以结贴了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 19:14:17 | 显示全部楼层
嗯  暂且结帖吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 02:45 , Processed in 0.036221 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表