执行了select,后使用了SQLExtendedFetch, 如何更新当前记录?

解决方案 »

  1.   


    直接使用 ODBC API 的太少了,资料也少得可怜.很久以前第一次接触数据库时用过,不过现在不搞数据库编程都忘光了,好像是在三个句柄的基础上调用 API 执行 SQL 语句.很遗憾帮不上忙了!
      

  2.   

    使用SQLFetchScroll
    使用ODBC API一般较少在客户端以 cursor的方式更新数据,而是使用存储过程调用
      

  3.   

    1.创建一个表的映射     创建一个类,如CUserSet让它继承于CRecordset,创建完后VC让选择ODBC中的库,然后指定表我们选择user表,这样这个类基本上就和表user进行了映射.一定要在UserSet.h加入#include <afxdb.h>不然会出一堆没定义的错误。2.新增一条记录CUserSet userset;//创建一个类的对象
    userset.Open(CRecordset::snapshot,"select * from user");
    userset.AddNew();
    userset.m_username = "月风"; //把你要新加的内容传给记录集类对应数据库的字段
    userset.m_sex="男";
    userset.Update();
    userset.Close();2.修改一条记录CUserSet userset;//创建一个类的对象
    CString strSql;
    strSql.Format("select * from user where username='%s'",strUsername);//必须为表里有的数据,如刚才加的月风
    if(!m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,strSql))
    {
       MessageBox("数据库操作错误","错误");
       return;
    }
      userset.Edit();
      userset.m_username = "明";
      userset.m_sex = "女";
      userset.Update();
      userset.Close();3.删除记录CUserSet userset;//创建一个类的对象
    CString strSql;
    strSql.Format("select * from user where username='%s'",strUsername);//strUsername为要删除的记录条件
    if(!m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,strSql))
    {
       MessageBox("数据库操作错误","错误");
       return;
    }
    userset.Delete();
    userset.Close();