刚遇到新问题在C++中使用insert 语句插入40条记录的时候,无法完成插入。但是插入10条记录的时候就可以,请问这是什么原因。
例:
    sprintf_s(strSQL,"insert into test(name,number,................) values(\'%s\',\'%d\',................')","asdgjhas",5,........);
怎么使用这样的语句想数据库插入多条记录,(40条以上的记录??!);是否有什么限制性的语句??!          之后我只是用了这条语句来判断是否插入成功,
        if (mysql_real_query(YManagerModelCL::GetInstance().GetDBHandle(),strSQL,Lenght) != 0)
{
AfxMessageBox(_T("增添失败,请与系统管理员联系!")); 
return FALSE;
}

解决方案 »

  1.   

    insert into tt values(1,2,3)
    insert into tt values(4,5,6)
    分次运行
      

  2.   

    那你写一条完整的SQL语句出来看看,包括所有字段
      

  3.   

        sprintf_s(strSQL,"insert into skilltab(skillName,type,number,MP,AP,arms,element,level,daFa,FanWei,huiHe,miaoShu,state,hitCount,hightSkill,front,next,hitType,skillJianGe,initValue,initState,smallMap,hue,sat,val,music1,time1,music2,time2,explain,teachCount,baseHit,hitCountA,lightShadow,harm,LV,skillTree,passivitySkill,authorName,affirmName,createTime) values(\'%s\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%s\',\'%d\',\'%f\',\'%d\',\'%d\',\'%s\',\'%d\',\'%d\',\'%d\',\'%d\',\'%s\',\'%s\',\'%s\')",strSkillName,pSkillInfo->GetType(),pSkillInfo->GetNumber(),pSkillInfo->GetMp(),pSkillInfo->GetAp(),pSkillInfo->GetArms(),pSkillInfo->GetElement(),pSkillInfo->GetLevel(),pSkillInfo->GetDaFa(),pSkillInfo->GetFanWei(),pSkillInfo->GetHuiHe(),pSkillInfo->GetMiaoShu(),pSkillInfo->GetState(),pSkillInfo->GetHitCount(),pSkillInfo->GetHightSkill(),pSkillInfo->GetFront(),pSkillInfo->GetNext(),pSkillInfo->GetHitType(),pSkillInfo->GetSkillJianGe(),pSkillInfo->GetInitValue(),pSkillInfo->GetInitState(),pSkillInfo->GetSmallMap(),pSkillInfo->GetHue(),pSkillInfo->GetSat(),pSkillInfo->GetVal(),pSkillInfo->GetMusic1(),pSkillInfo->GetTime1(),pSkillInfo->GetMusic2(),pSkillInfo->GetTime2(),strExplain,pSkillInfo->GetTeachCount(),pSkillInfo->GetBaseHit(),pSkillInfo->GetHitCountA(),strLihgtShadow,pSkillInfo->GetHarm(),pSkillInfo->GetLV(),pSkillInfo->GetSkillTree(),pSkillInfo->GetPassivitySkill(),authorName,YManagerModelCL::GetInstance().GetSuperUserName(),timeTmp);  if (mysql_real_query(YManagerModelCL::GetInstance().GetDBHandle(),strSQL,Lenght) != 0) 
      { 
      AfxMessageBox(_T("增添失败,请与系统管理员联系!")); 
      return FALSE; 
      }
      

  4.   

    ----
    可能的原因:…d\',\'%s\',\'%s\',\'%s\')",strSkillName,pSkillInf… 应该是
    …d\',\'%s\',\'%s\',\'%s\')  ;   ",strSkillName,pSkillInf…我觉得是少了一个“;”,因此每次只有最后一行的值可以插入。mysql需要结束符;,而最后一行,作为命令本身的结束可以例外,因此最后一行数据可以插入。
      

  5.   

    看不到你的程序,只能猜了,你的SQL语句是什么样?printf()看一下。
    如果你是一次生成一个string 包含40个SQL语句,则不行,一次的SQL语句有最大字符限制。.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  6.   

       哦,也觉的是这个问题,但是我就是不知道该怎么解决这个问题,我的printf()语句是这样的。我断点跟进去测试了很多数据,插入10条以内的记录,插入是成功的,但是插入10条以上的记录,插入就失败了。里面的值都有,只是str的长度不同,所以导致插入不成功,发帖就是想请教一下,有什么办法可以一次插入多条记录,而对字符的长度无限制。比如,一次插入100条,或更新100条记录。、
          
        printf()语句:
          char strSQL[255];
          printf(strSQL,"insert into table(name, type,number,...................) values(\'%s\',\'%d\',\'%d\',.................)",strNAME,strTYPE,strNUMBER,...................);
         我不知道处理这样的插入在C++中还能怎么做数据库的插入。望各位大侠提点一下啊。
                
      

  7.   

    char strSQL[255]; 
    有没有可能你得sql语句已经越过225个字符的长度?

    char * strSQL
    看看
      

  8.   

       非常感谢大家,对我的帮助,o(∩_∩)o...,问题已经解决了,原来是MYSQL在插入时有限制,我把配置文件该了一下就全部OK了!o(∩_∩)o...!再次感谢大家。由于本人是新手,积分不多,大家的寒酸了点儿,望大家不要见笑啊。o(∩_∩)o...!