这个要你自己先判断 
  然后再决定 Update or Insert

解决方案 »

  1.   

    TO DeadWolf:
       我就是不知道怎样用_RecordsetPtr类来判断。 望狼兄指点一二!
      

  2.   

    用_RecordsetPtr的连接执行Select ... where ...
      看有没有记录返回
    我只有这个笨办法了
      

  3.   

    写一存储过程也可。
    if not exist(select  where)
       增加
    else
       修改
      

  4.   

    To DeadWolf: 如果执行Select,怎样判断有没有记录返回?To nichang: 能给我一个具体的存储过程例子吗?
      

  5.   

    例表名为dangan,里面有name字段。
    _RecordsetPtr rst;
    ...
    _bstr_t bsSql="select * from dangan where name='x'"
    rst->Open(bsSql,...)
    if(rst->ADOEOF)
    {
       没有该记录。
       增加
    }
    else
    {
       找到该记录,修改
    }
    使用存储过程
    AddEditDangan
    @chrName char(10)若该字段为10字节,
    as 
    if not exist(select * from dangan where name=@chrName)
       不存在该记录,增加
    else
       存在该记录,修改。
    使用_CommandPtr对象执行该存储过程,传入name 参数,就行了。
      

  6.   

    TO nichang: 能给我介绍一下存储过程的入门知识吗? 我再加50分!!!
      

  7.   

    如果用存储过程的话,那干脆由存储过程判断并决定怎样处理
      在程序中就不需要判断了
    用存储过程这个主意确实不错Select 返回的记录集的记录数为0则表示没有记录 可以做插入操作  否则做更新操作
      

  8.   

    _variant_t RecordsAffected;
    m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM table where ...",&RecordsAffected,adCmdText); _variant_t vIndex = (long)0; 
    _variant_t vCount = m_pRecordset->GetCollect(vIndex);if(vCount.lVal==0)
      insert...
    else
      update...
      

  9.   

       Dim cnn1 As ADODB.Connection
       Dim rstEmployees As ADODB.Recordset
       Dim strCnn As String
       Dim strID As String
       Dim strFirstName As String
       Dim strLastName As String
       Dim booRecordAdded As Boolean   ' 打开连接。
       Set cnn1 = New ADODB.Connection
       strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;"
       cnn1.Open strCnn
          
       ' 打开雇员表。
       Set rstEmployees = New ADODB.Recordset
       rstEmployees.CursorType = adOpenKeyset
       rstEmployees.LockType = adLockOptimistic
       rstEmployees.Open "employee", cnn1, , , adCmdTable
       rstEmployees.AddNew
       rstEmployees!emp_id = strID
       rstEmployees!fname = strFirstName
       rstEmployees!lname = strLastName
       rstEmployees.Update
       booRecordAdded = True另外也可以操作sql语句insert!
      

  10.   

    vc和vb在ADO的操作上是很接近的!
      

  11.   

    兄弟们,今天给不了分,老是HTTP出错看来, 不知怎么回事!只好明天结帐了!
      

  12.   

    #import "c:\program files\common files\system\ado\msado15.dll" rename ("EOF","adoEOF") no_namespace
    ... _ConnectionPtr m_pConnection; //数据库连接对象
    _CommandPtr m_pCommand;       //命令集
    _RecordsetPtr m_pRecordset;   //结果集 _ParameterPtr spPAR1;          //参数1
            _ParameterPtr spPAR2           //参数2
    _ParameterPtr spPAR3;          //参数3
    _ParameterPtr spPAR4;          //参数4
             
             m_pConnection.CreateInstance("ADODB.Connection"); 
             m_pCommand.CreateInstance("ADODB.Command");
             m_pRecordset.CreateInstance("ADODB.Recordset"); 
     
             CREATEiNSTANCE(spPAR1,Parameter) ;     //参数1
             CREATEiNSTANCE(spPAR2,Parameter) ;     //参数2
             CREATEiNSTANCE(spPAR3,Parameter) ;     //参数3
             CREATEiNSTANCE(spPAR4,Parameter) ;     //参数4        hrCon=m_pConnection->Open("","","",-1);  //连接字符串偶就不写了
            m_pCommand->ActiveConnection=m_pConnection;
            m_pRecordset->PutRefActiveConnection(m_pConnection);
             
            m_pCommand->CommandType=adCmdStoredProc;//说明命令类型--存储过程        spPAR1=m_pCommand->CreateParameter("存储过程参数1",      adVarChar,adParamInput,8); //指定参数类型,长度
            m_pCommand->Parameters->Append(spPAR1);  spPAR2=m_pCommand->CreateParameter("存储过程参数2",      
    adVarChar,adParamInput,8); //指定参数类型,长度
            m_pCommand->Parameters->Append(spPAR2);  spPAR3=m_pCommand->CreateParameter("存储过程参数1",      adVarChar,adParamInput,8); //指定参数类型,长度
            db->m_pCommand->Parameters->Append(spPAR3);  spPAR4=m_pCommand->CreateParameter("存储过程参数1",      adVarChar,adParamInput,8); //指定参数类型,长度
            m_pCommand->Parameters->Append(spPAR4);  spPAR4=...;
    spPAR4=...;
    spPAR4=...;
    spPAR4=...;   //参数赋值 m_pCommand->Execute(NULL,NULL,0);  //执行存储过程