向数据库中添加数据的时候出现了这个提示,该怎么解决啊?看了论坛上的帖子,也不是很明白,请指教!
CDlgDataAdd dlg;
dlg.sheet="榫齿截面控制点位置";
if (dlg.DoModal()==IDCANCEL) return;
ADOConn ado;
int adosign=ado.OnInitADOConnect();
if (adosign==FALSE)
{
uc1601("连接数据库失败,请检查其运行状况",1);
return;
}
l_str[1].Format("%.4f",l1);
l_str[2].Format("%.4f",l2);
l_str[3].Format("%.4f",l3);
l_str[4].Format("%.4f",l4);
l_str[5].Format("%.4f",l5);
l_str[6].Format("%.4f",l6);
l_str[7].Format("%.4f",l7);
l_str[8].Format("%.4f",l8);
l_str[9].Format("%.4f",l9);
l_str[10].Format("%.4f",l10);
l_str[11].Format("%.4f",l11);
l_str[12].Format("%.4f",l12);
l_str[13].Format("%.4f",l13);
l_str[14].Format("%.4f",l14);
l_str[15].Format("%.4f",l15);
r_str[1].Format("%.4f",r1);
r_str[2].Format("%.4f",r2);
r_str[3].Format("%.4f",r3);
r_str[4].Format("%.4f",r4);
r_str[5].Format("%.4f",r5);
r_str[6].Format("%.4f",r6);
r_str[7].Format("%.4f",r7);
r_str[8].Format("%.4f",r8);
r_str[9].Format("%.4f",r9);
r_str[10].Format("%.4f",r10);
r_str[11].Format("%.4f",r11);
r_str[12].Format("%.4f",r12); ag_str[0].Format("%.4f",ag1);
ag_str[1].Format("%.4f",ag2);
CString temp[2];
temp[0].Format("%d",dlg.add_item.jm_index);
temp[1].Format("%d",dlg.add_item.com_index);                                                                                                                                                                                    
    CString tempSQL="INSERT INTO 榫齿截面控制点位置(截面名称,厂家名称,厂家索引,截面索引,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,R1,R1,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,AG1,AG2) VALUES (";                                                            
                                                                                                                
tempSQL=tempSQL+temp[0]+",'"+dlg.add_item.jm_str+"',"+temp[1]+",'"+dlg.add_item.comp_str+"'";
int i=0;
for (i=1;i<15;i++)
{
tempSQL=tempSQL+","+l_str[i];
}
for (i=1;i<13;i++)
{
tempSQL=tempSQL+","+r_str[i];
}
for (i=0;i<2;i++)
{
tempSQL=tempSQL+","+ag_str[i];
}
      _bstr_t vSQL=tempSQL;
int addsign=ado.ExecuteSQL(vSQL);//有问题     if(addsign==1) uc1601("添加成功",1);
else uc1601("添加失败",1);
在设置断点调试的时候,在int addsign=ado.ExecuteSQL(vSQL);这句话的时候提示有问题!

解决方案 »

  1.   

    是不是因为表名引起的问题?你可以试试把表名用括号括起来,如下所示:
    CString tempSQL="INSERT INTO [榫齿截面控制点位置](截面名称,厂家名称,厂家索引,截面索引,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,R1,R1,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,AG1,AG2) VALUES (";   仅供参考
      

  2.   

    _bstr_t vSQL=(_bstr_t)tempSQL;试试
      

  3.   

    IDIspatch error #3092 错误 表示sql执行语句有语法错误
    应该是少列值上少单引号 比如 tempSQL=tempSQL+temp[0]+",'"+
    应该是 tempSQL="'"+tempSQL+temp[0]+"','"+可以在执行语句之前把拼好的语句打印出来,比如
    AfxMessageBox(vSQL),看看语句是否正确。
      

  4.   

    貌似 VALUES 后少了右括号 )
    截面名称,厂家名称,厂家索引,截面索引 的顺序错了,和temp[0]+",'"+dlg.add_item.jm_str+"',"+temp[1]+",'"+dlg.add_item.comp_str不对应这样比较清晰点
    CString tempSQL;
    tempSQL.Format("INSERT INTO 榫齿截面控制点位置(截面名称,厂家名称,厂家索引,截面索引,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,R1,R1,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,AG1,AG2) VALUES ('%s','%s',%d,%d,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f)",dlg.add_item.jm_str,dlg.add_item.comp_str,dlg.add_item.jm_index,dlg.add_item.com_index,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,ag1,ag2);
      

  5.   

    好好再检查下sql语句,像逗号冒号啥的,格式都得对