热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

读写SQLServer数据库中的image类型数据(简单)

1、将double类型的数据存储于image类型的变量中:(1)、char*CManualForecastResultBll::DoubleArray2Binary(std::vector

1、将double类型的数据存储于image类型的变量中:

(1)、   
char *CManualForecastResultBll::DoubleArray2Binary(std::vector &doubleArray)
{
    int len = doubleArray.size();
    char *bin = new char[len * sizeof(double)];
    unsigned __int64 *p = (unsigned __int64*)bin;
    for (int i = 0; i     {
        *p = DOUBLE2UINT64(doubleArray.at(i));
        p++;
    }
    return bin;
}

unsigned __int64 CManualForecastResultBll::DOUBLE2UINT64(double v)
{
    unsigned __int64 *pu64n = NULL;
    pu64n = reinterpret_cast(&v);
    return *pu64n;
}

        (2)、

 

         VARIANT            varBLOB;
                        SAFEARRAY        *psa;
                        SAFEARRAYBOUND    rgsabound[1];

                        rgsabound[0].lLbound = 0;
                        rgsabound[0].cElements = (ULONG)(pData->qLen);
                        psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
                        byte * pQt = pData->QTLINE;                                //自己的数据byte类型
                        for (long i = 0; i qLen; i++)
                            SafeArrayPutElement (psa, &i, pQt++);
                        varBLOB.vt = VT_ARRAY | VT_UI1;
                        varBLOB.parray = psa;
                        pRecordset->GetFields()->GetItem(SimulateResultDataFeilds[i])->AppendChunk(varBLOB);

 

2、根据已知image类型中存储的数据类型(例如:double、float等)取数据:

case VT_ARRAY | VT_UI1:

             Binary2DoubleArray(vtFld);
                  break;

//////////////////////////////////////////////////////////////////////////
void DBRecordset::Binary2DoubleArray(_variant_t vtFld)
{
    int len =  vtFld.parray->rgsabound->cElements / sizeof(double);
    double *pdata = new double[len];

    /*int len =  vtFld.parray->rgsabound->cElements / sizeof(float);
    float *pdata = new float[len];*/

    SafeArrayAccessData(vtFld.parray, (void**)&pdata);

    /*unsigned __int64 *pu64n = new unsigned __int64[len];
    SafeArrayAccessData(vtFld.parray, (void**)&pu64n);*/

    ofstream writetofile("image.txt");
    for (int i = 0; i     {
        if (i % 30 == 0 && i != 0)
        {
            writetofile<        }
        writetofile<        //writetofile<<*(reinterpret_cast(&pu64n[i]))<<"\t";
        writetofile.flush();
    }
    writetofile<    writetofile.close();
    SafeArrayUnaccessData(vtFld.parray);
}


推荐阅读
author-avatar
手机用户2702936513
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有