我用VC写ORACLE数据库时,为什么程序崩溃但数据却写进去了呢?我用的是ADO方法,哪位大侠帮帮我阿,感激不尽!~

解决方案 »

  1.   

    我有的时候写数据库程序不崩溃,数据写进去了,但有时候崩溃了,数据却也写进去了,真不知道是什么回事阿,我是ORACLE菜鸟,哪位大侠能帮帮我阿?
      

  2.   

    int nodeid;
    CString nodename;
            CString sql2;
             sql2="SELECT * FROM SATELLITE";
    m_pRecordset =m_pConnection->Execute(_bstr_t(sql2),&RecordsAffected,adCmdText);
    if(m_pRecordset->BOF)
    {
    AfxMessageBox("表内数据为空");
    }
    m_pRecordset->MoveFirst();
    hchild=m_treeCtrl.GetChildItem(hRootsatellite);
    while(hchild!=NULL)
    {
    check=m_treeCtrl.GetCheck(hchild);
    if(check)
    {
    TheValue=m_pRecordset->GetCollect("NODEID");
    if(TheValue.vt!=VT_NULL)
    nodeid=TheValue.lVal;
    TheValue=m_pRecordset->GetCollect("NODENAME");
    if(TheValue.vt!=VT_NULL)
    nodename=(char*)(_bstr_t)TheValue;
    sql2.Format("INSERT INTO SIM_NODE(SCHEMEID,NODEID,NODETYPE) VALUES('%s',%d,'%s')",schemeid,nodeid,nodename);
    m_pConnection->Execute((_bstr_t)sql2,&RecordsAffected,adCmdText);
    }
    hchild=m_treeCtrl.GetNextItem(hchild,TVGN_NEXT);
    m_pRecordset->MoveNext();
    }
    好像这块有错
      

  3.   

    你的while条件限制太少了。
    while(hchild!=NULL && !m_pRecordset->EOF)  //应该有类似于EOF这个么判断,查查相关文档
    {
    }
      

  4.   

    呵呵,谢谢楼上的,我hchild是合m_pRecordset是同步往下的阿,而且hchild的个数和数据库纪录的条数是一样多的
      

  5.   

    你debug时,程序在哪个地方崩溃,把那块的调用栈打出来吧。
      

  6.   

    7C81EB33   pop         esi
    真是太感谢你了:)
      

  7.   

    你用的是ADO,对吗?我印象里,似乎有一个初始化的动作。涉及到是否是多线程。
    if(FAILED(::CoInitialize(NULL))) exit(-1);这是单线程初始化if (FAILED(::CoInitializeEx(NULL, COINIT_MULTITHREADED)))这是多线程初始化。由于我从来不使用MFC,只使用部分SDK.不知道你的应用对应的是多线程还是单线程,
    如果单线程应用,却初始化为多线程ADO库,也可能会崩。让你打出上边的callstack,不是要汇编码,而是要对应的source code的callstack。应该能打出来的。
      

  8.   

    问题解决了,原来是我数据库的问题,是number型的只能能插入0-9的数,我却插入10以上的数,所以就崩溃了,谢谢楼上的大侠的热心指导,真是感激不尽,以后有问题希望还能购请教你阿:)