关于sql语句的问题,我想将二维数组的值存入数据库中,二维数组为double (*)p【4】;行数为变量nRow
写了一个很简单的sql语句
for(int i=0;i<nRow;i++)
{
   _variant_t strSQL="insert into tycdata(fgj,fnd,fyl,fccxs) values("+p[i][0]+","+p[i][1]+","+p[i][2]+","+p[i][3]+")";
if(theApp->executeADO(theApp->m_pAdoset,strSQL))//已经定义函数,不存在问题
{

}结果老是提示错误,point additional requiers integral operand错误,通过不了编译。插入字符串这种写法又没有错误,是不是vc中的sql语句对非、字符穿的变量有另外的写法,各位大哥帮帮忙,不胜感激!!

解决方案 »

  1.   

    我的经验是再复杂的结果集,也只用一条Sql语句搞定。即使用join和union也在所不惜。
    从而减少程序中的处理和代码量。
      

  2.   

    用CString的FORMAT来处理好了。
    CString strSql;
    strSql.Format("insert into tycdata(fgj,fnd,fyl,fccxs) values(%s,%s,%s,%s",p[i][0],p[i][1],p[i][2],p[i][3]);
      

  3.   

    我的经验是再复杂的结果集,也只用一条Sql语句搞定。即使用join和union也在所不惜。
    从而减少程序中的处理和代码量。
    ============================================================================呵呵,也要具体情况具体分析啊。如果很复杂的关联,我宁愿在数据库里建view.
      

  4.   

    同意hjunxu(hjun) 
    用Format()函数
      

  5.   

    用format好像不行,因为数据库中是float型,所以插入到数据库中出错!
      

  6.   

    而且函数adoExecute函数用的是_variant_t类型
      

  7.   

    float可以用差值比较 f1-f2<0.0000001类似的来比较
      

  8.   

    strSql.Format("insert into tycdata(fgj,fnd,fyl,fccxs) values(%s,%s,%s,%s",p[i][0],p[i][1],p[i][2],p[i][3]);values(%s,%f,%f,%f")改成对应的类型就行了嘛
      

  9.   

    所以最好不要直接用SQL语句去新增记录,那样很多类型就比较难写,用addnew和putcollect最方便。
      

  10.   

    用CString的FORMAT来处理好了。
    CString strSql;
    strSql.Format("insert into tycdata(fgj,fnd,fyl,fccxs) values(%s,%s,%s,%s",p[i][0],p[i][1],p[i][2],p[i][3]);-----------------------------------
    正解!