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

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

unsigned __int64 CManualForecastResultBll::DOUBLE2UINT64(double v)
{
    unsigned __int64 *pu64n = NULL;
    pu64n = reinterpret_cast<unsigned __int64*>(&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 < pData->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 < len; i++)
    {
        if (i % 30 == 0 && i != 0)
        {
            writetofile<<endl;
        }
        writetofile<<pdata[i]<<"\t";
        //writetofile<<*(reinterpret_cast<double*>(&pu64n[i]))<<"\t";
        writetofile.flush();
    }
    writetofile<<endl;
    writetofile.close();
    SafeArrayUnaccessData(vtFld.parray);
}

读写SQLServer数据库中的image类型数据(简单)的更多相关文章

  1. 关于数据库中varchar/nvarchar类型数据的获取注意事项

    当在页面后台获取数据库表中某字段的数据时,需注意该数据的类型.防止因实际数据的字符长度因达不到指定数据类型规定的字符长度而导致空格的占位符. 比如: MSSQL中某一表的结构如下:   表中的数据: ...

  2. C#:向SqlServer数据库中插入imange类型

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...

  3. Excel 数据导入至Sqlserver 数据库中 ltrim() 、rtrim() 、replace() 函数 依次空格无效问题

    今天导一些数据从Excel中至Sqlserver 数据库中,在做数据合并去重的时候发现,有两条数据一模一样,竟然没有进行合并: 最后发现有一条后面有个“空格”,正是因为这个“空格”让我抓狂许久,因为它 ...

  4. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  5. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页

    在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...

  7. SQLServer清空数据库中所有表的数据

    今早同事跟进客户反馈的问题时,提了个要求,要求清空数据库中所有表的数据. 记得之前用游标遍历所有的表名 + exec 动态语句 truncate table 表名 实现过这个功能. 网上搜了下,有更简 ...

  8. Sqlserver数据库中的临时表详解

    临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...

  9. PowerDesigner从SqlServer数据库中导入实体模型

    PowerDesigner从SqlServer数据库中导入实体模型 时间 2013-06-28 10:26:34 CSDN博客 原文  http://blog.csdn.net/sxycxwb/art ...

随机推荐

  1. busdog is a filter driver for MS Windows (XP and above) to sniff USB traffic.

    https://code.google.com/p/busdog/ busdog is a filter driver for MS Windows (XP and above) to sniff U ...

  2. VC中__int64的用法

    VCVC6.0的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^63)与[0,2^64),即-922337203685 4775808~922337 ...

  3. Okam(奥卡姆):小程序开发框架

    Okam(奥卡姆):小程序开发框架 Okam 是什么 `Okam` 一个面向小程序开发的开发框架,开发体验类 `Vue`.详情 Okam 对各小程序的支持情况 支持 百度小程序 支持 微信小程序 支持 ...

  4. 使用Redisson实现分布式锁

    原文:https://www.jianshu.com/p/cde0700f0128 1. 可重入锁(Reentrant Lock) Redisson的分布式可重入锁RLock Java对象实现了jav ...

  5. Model工具

    Sybase PowerDesigner - 一个高端数据建模工具.你可以下载一个45天试用版. ERWin - 一个高端数据建模工具.可下载试用版. Rational Rose Enterprise ...

  6. iOS开发 贝塞尔曲线UIBezierPath(2)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  7. javascript转换日期字符串为Date对象

    把一个日期字符串如“2007-2-28 10:18:30”转换为Date对象: 1: var strArray=str.split(" "); var strDate=strArr ...

  8. Unity3d地图制作之模型高光

    由于颇受暗黑破坏神美工的影响,最近都在研究怎么制作场景地图之类的. 那么今日讲的模型高光虽然和地图无关,但是也涉及到一些美工的知识,尤其是shader. 按照国际惯例,先贴一张图饱饱眼福. 大家可以看 ...

  9. Android onConfigurationChanged 不执行

    自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变. 所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetS ...

  10. WebView利用UserAgent传递SESSIONID

    mWebView.getSettings().setUserAgentString(mWebView.getSettings().getUserAgentString()+"SESSIONI ...