根据用户单击listctrl某行  我取得此条记录对应的ID:
 CString keyid = (m_listkey.GetItemText(nItem,0));   正确
然后我要删除这条 我写法如下:
try
{         
m_pRecordset.CreateInstance(__uuidof(Recordset));
sql = "DELETE FROM clientre  WHERE ID=atoi(keyid)"; 
sql.Format(sql,atoi(keyid));
m_pRecordset->Open((_variant_t)sql,  // 查询Table表中所有字段
                    theApp.m_pConnection.GetInterfacePtr(),
                    adOpenDynamic,
                    adLockOptimistic,
                    adCmdText);ReadAccess();
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} }运行时try语句里报错
应该就是sql语句问题
多谢各位

解决方案 »

  1.   

    直接用ado connection 的execute 
    //数据库的删除操作
    bool CTestMenuDlg::DbDelete(CString sql)
    {

    _variant_t RecordsAffected;

    try
    {
    m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdUnknown);
    }
    catch(_com_error e)///捕捉异常
    {

    return false;
    //CATCH_ERROR;
    } RecordsAffected.Clear();
    return true;
    }
      

  2.   

    //
    sql = "DELETE FROM clientre  WHERE ID=atoi(keyid)"; 
    sql.Format(sql,atoi(keyid));
    //
    ...........改成:
    CString sql;
    sql.Format("DELETE FROM clientre  WHERE ID=%d",keyid);试试!@)
      

  3.   

    ....上面好像错了一点.没有看到 keyid是一个CStringCString sql;
    sql="DELETE FROM clientre  WHERE ID="+keyid;
      

  4.   

    CString sql;
    sql.Format("DELETE FROM clientre  WHERE ID=%d",keyid);
    atoi(keyid)变成了字符