说明:
首先查找数据库里是否已经存在我将要插入的数据,存在就退出,不存在则插入。
代码如下: strSql  = "SELECT * FROM tb WHERE fapiaohaoma=111";
if ( !m_pCODBCConnSet->Open(CODBCConnSet::forwardOnly,strSql,CODBCConnSet::appendOnly) )
{
this->WorkStop();
return;
}
if ( m_pCODBCConnSet->GetRecordCount() > 0 )
{
m_pCODBCConnSet->Close();
return;
} m_pCODBCConnSet->SetFieldNull(NULL);
m_pCODBCConnSet->AddNew();
m_pCODBCConnSet->m_fapiaohaoma = atoi( (*argStaticTxtArray)[Fapiaohaoma] );
m_pCODBCConnSet->m_xiufubiaozhi = (*argStaticTxtArray)[Xiufubiaozhi];
m_pCODBCConnSet->m_zhuyaoshangming = (*argStaticTxtArray)[Zhuyaoshangming];
try   
{
m_pCODBCConnSet->Update()
m_pCODBCConnSet->Close();
}   
catch(CDBException   *e)   
{   
MessageBox(NULL,e->m_strError,"",0);   
}   

解决方案 »

  1.   

    顺带问下我怎么通过MFC的CRecordSet类执行insert语句。谢谢。
      

  2.   

    CODBCConnSet::forwardOnly
    感觉是这句的问题,为什么要设置只能向前滚动?换一个试试呗
      

  3.   

    换成snapshot的话,addnew处就错了
      

  4.   

    snapshot 这个是快照啊,不能添加,换成dynaset试试
      

  5.   

    你可以用CDataBase的ExecuteSQL()执行SQL语句
      

  6.   

    CRecordset::forwardOnly 只能向前滚动的只读的记录集 换成CRecordset::dynaset试试
      

  7.   

    换成dynaset后,recordset在delete的时候除了错
    错误指向void CRecordset::Delete()中的
    ASSERT(m_hstmt != SQL_NULL_HSTMT);不过我还是没想明白为何forwardOnly和snapshot不可以,我今天看了好久的msdn因为看msdn的时候就注意了recordset类,所以希望能在recordset中解决问题。如果实在没辙,只能用CDataBase了
      

  8.   


    看来是我没看清
    Pass the option CRecordset::forwardOnly as the nOpenType parameter of the member function.
    Specify CRecordset::readOnly in the dwOptions parameter of Open. 
      

  9.   

    WorkStop();这个函数代码给一下呗,用dynaset 肯定是没问题的,经常用,如果数据量很大的话,比如>50万的记录可能会提示数据库连接超时,最好用dynamic代替,不过有的ODBC好像不支持dynamic
      

  10.   

    workstop目前还没有实现,里面是空函数
      

  11.   

    看到一个类似的链接好像
    http://topic.csdn.net/u/20090526/14/053be65e-d813-4417-bdcd-b7f1d581a8a9.html不知道能给大家一些思路不。
      

  12.   

    错误的提示是说 没有找到你要删除的记录 你可以先用一个查询看有没有你的记录,例外删除的时候最好使用dynaset,顺序确定,在不然的话,把你delete的代码贴一下,看看
      

  13.   


    太感谢了!这话点醒了我。因为我以为这是recordset对象删除
    我再试试!
      

  14.   

    好了,我的程序都执行没报错了。
    现在只剩下一个问题,我的access文件中数据没变化。。
    难道odbc选择的数据源驱动有问题?