我的代码是这样的,把浮点数组转成了safearray安全数组,再写入数据库,可是在写入的时候出错了
float Code[220];
SAFEARRAY* psb;
SAFEARRAYBOUND rgsbbound[1];
rgsbbound[0].lLbound = 0;
rgsbbound[0].cElements = 220;
psb = SafeArrayCreate(VT_R4, 1, rgsbbound);for (i=0; i<220; i++)
{
        SafeArrayPutElement(psb, &i, Code++);
}VARIANT var;
var.vt = VT_R4 | VT_ARRAY;
var.parray = psb;
m_pRecordset->Fields->GetItem("FF")->AppendChunk(var);
在最后写库这一行代码,出现异常,写不进去,我在哪里弄错了,求指导VC/MFCsql serverfloat数组

解决方案 »

  1.   

    看下这个例子,把float转换成byte,或者转成字符串来存,读的时候再转换回来。
      

  2.   

    我写到安全数组里面是转成byte类型的,可是这样已经加大我的误差范围,要是转成字符串的话,我数据库的字段应该用什么类型呢?转byte存数据库时我是用image类型
      

  3.   

    你看你数据库里的对应的字段是什么类型,如果字段类型是float,那么你这么写就是错的,你必须也得按float型数据赋给数据库才行.你没必须把float转成BYTE,直接就按float赋给数据库,数据库字段也是非曲直float
      

  4.   

    就把数据的字段改成文本型,直接写字符串,用的时候读出来atof转换成浮点型就可以了
      

  5.   

    format为字符串写入,读出时在format回浮点数
      

  6.   

    存成字符串,用varchar(max)试试。
      

  7.   

    是不是先转成字符串,存进SafeArray里面,再写入表varchar里面
      

  8.   

    对照我原本的代码,只要把float code[220]里面全部数据转成字符串的几行代码 和 把字段改成varchar(max),单改两点,我已经试过,并同样把
    psb = SafeArrayCreate(VT_BSTR, 1, rgsbbound);
    var.vt = VT_BSTR | VT_ARRAY;
    修改成这样了,可以到最后还是写库出错
      

  9.   

    不是这个意思,存的时候把float code[220]连成一个CString,CString可以直接赋值给_variant_t变量,读的时候再解析这个字符串存到float code[220]中。
      

  10.   

    写到同一个cstring下,float与float连接之间要加什么区分的吗?
      

  11.   

    CString str; CString strFloat;
    for (i=0; i<220; i++)
    {
    str.Format(_T("%f"), featureCode[i]);
    strFloat += str ;
    }我是这样写在strFloat下,然后赋给_variant_t变量,再写库,但这样读出来的数据是所有浮点数连接起来,不好区分,不能直接用atof,我这个浮点数怎样写入strFloat里面,在读出来的时候可以容易区分每个浮点数
      

  12.   

     str.Format(_T("%f"), featureCode[i]);
    strFloat  += _T(" ");
            strFloat += str ;
      

  13.   

    float本身占4个字节如果我想直接把浮点类型的变量值拷贝到字符串,这样字符串会不会叠加上去,叠成220*4这样效果?