根据用户单击listctrl某行  我取得此条记录对应的ID:
 CString keyid = (m_listkey.GetItemText(nItem,0));   正确,得到了id值
然后我要删除这条 我写法如下:
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, 
                    theApp.m_pConnection.GetInterfacePtr(),
                    adOpenDynamic,
                    adLockOptimistic,
                    adCmdText);ReadAccess();//更新显示
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}}运行时try语句里报错
应该就是sql语句问题 更确切的说 应该就是where后面有错
多谢各位

解决方案 »

  1.   

    sql = "DELETE FROM clientre  WHERE ID='"+keyid+"'";
      

  2.   

    改成下面的试试看 CString keyid = (m_listkey.GetItemText(nItem,0));   正确,得到了id值
    int m_keyid;
    m_keyid=atoi(keyid);try
    {         
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    sql = "DELETE FROM clientre  WHERE ID=m_keyid"; 
    sql.Format(sql,atoi(keyid));
    m_pRecordset->Open((_variant_t)sql,
      

  3.   

    多谢
    我在select的时候就是您这样写的 可以实现
    但select的where后不是int 而是char型的
    现在的delete 我是要根据id删除  id是整型  好像跟char不同
      

  4.   

    id=1和id='1'在sql中是一样的
      

  5.   

    多谢
    robin_yao() 的方法能删除 只是删除后报运行错误
    其他几位朋友的 跟我自己的一样原理啊  呵呵
      

  6.   

    你的open语句有没有问题哦?
    m_pRecordset->Open("SELECT * FROM users",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);你参考这句改一下试试。
      

  7.   

    直接用m_pconnection.Execute 方法即可
      

  8.   

    m_pconnection  没Execute方法 
    好像vb里是可以的
      

  9.   

    m_pconnection  没Execute方法 
    好像vb里是可以的-----------------------------------------------------------VB里有VC里也一样会有,都是一个东西。
    这种问题我一般是把生成的SQL语句先在数据库中执行一下看看有没有问题,一般来说数据库里没问题,程序里也不会有问题。
      

  10.   

    数据库编程最好像wy2001wy(小鱼儿)说的那样,很少有问题出现