绑定一个数据库里的表格到一个C++对象class CTableRs:public CADORecordBinding
{
BEGIN_ADO_BINDING(CTableRs)
ADO_VARIABLE_LENGTH_ENTRY2(1,adVarChar,m_sz_no,sizeof(m_sz_no),m_sts_no,TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(1,adVarChar,m_sz_name,sizeof(m_sz_name),m_sts_name,TRUE)public:
ULONG  m_sts_no;
ULONG m_sts_name;CHAR m_sz_no;
CHAR m_sz_name;
}CTableRS rs;像上面这个类是否可以通过class wizard自动生成,如果可以的话,应该怎样操作呢?

解决方案 »

  1.   

    上面有一点小错误,我要问的是--这个类可不可以快速生成而不须要自己手动来编。lass CTableRs:public CADORecordBinding
    {
    BEGIN_ADO_BINDING(CTableRs)
    ADO_VARIABLE_LENGTH_ENTRY2(1,adVarChar,m_sz_no,sizeof(m_sz_no),m_sts_no,TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2(1,adVarChar,m_sz_name,sizeof(m_sz_name),m_sts_name,TRUE)
    END_ADO_BINDING()public:
    ULONG  m_sts_no;
    ULONG m_sts_name;CHAR m_sz_no[10];
    CHAR m_sz_name[20];
    }CTableRS rs;像上面这个类是否可以通过class wizard自动生成,如果可以的话,应该怎样操作呢?
      

  2.   

    the following codes are copied from msdn        TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
            pConnection->Open(strCnn,"","",adConnectUnspecified);        //Open employee table 
            TESTHR(pRstEmployees.CreateInstance(__uuidof(Recordset)));        //You have to explicitly pass the Cursor type and LockType to the Recordset here
            pRstEmployees->Open("employee",_variant_t((IDispatch *) pConnection, true),
                adOpenKeyset,adLockOptimistic,adCmdTable);
                    //Open an IADORecordBinding interface pointer which we'll use for Binding 
            //Recordset to a class    
            TESTHR(pRstEmployees->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));
            //Bind the Recordset to a C++ Class here   
            TESTHR(picRs->BindToRecordset(&emprs));                 // Get data from the user.The employee id must be formatted as
            // first,middle and last initial,five numbers,then M or F to
            // signify the gender.For example,the employee id for 
            // Bill A. Sorensen would be "BAS55555M". 
                 
            printf("Enter Employee Id: ");
            myscanf(emprs.m_sz_empid, sizeof(emprs.m_sz_empid));
            strId = emprs.m_sz_empid;
            printf("Enter First Name: ");
            myscanf(emprs.m_sz_fname, sizeof(emprs.m_sz_fname));
            printf("Enter Last Name:");
            myscanf(emprs.m_sz_lname, sizeof(emprs.m_sz_lname));        //Proceed if the user actually entered some thing  
            //for the id, the first and the last name. 
             
            if(strcmp(emprs.m_sz_empid,"")  && strcmp(emprs.m_sz_fname,"") && 
                strcmp(emprs.m_sz_lname,""))
            {
                //This adds a new record to the table   
                //if (FAILED(hr = picRs->AddNew(&emprs)))
                //_com_issue_error(hr);
                TESTHR(picRs->AddNew(&emprs));            //Show the newly added data
                printf("New Record: %s  %s  %s \n",\
                emprs.lemp_empidStatus == adFldOK ? emprs.m_sz_empid : "<NULL>",\
                emprs.lemp_fnameStatus == adFldOK ? emprs.m_sz_fname : "<NULL>",\
                emprs.lemp_lnameStatus == adFldOK ? emprs.m_sz_lname : "<NULL>");
            }
            else
                printf("Please enter an employee id, first name and last name.\n");    
            
            //Delete the new record because this is a demonstration. 
            pConnection->Execute("DELETE FROM EMPLOYEE WHERE emp_id = '"+strId+"'",
                NULL,adCmdText);#include "icrsint.h"
    //This Class extracts empid, fname and lastname  class CEmployeeRs : public CADORecordBinding
    {
    BEGIN_ADO_BINDING(CEmployeeRs)
        
        //Column empid is the 1st field in the recordset       ADO_VARIABLE_LENGTH_ENTRY2(1, adVarChar, m_sz_empid, 
             sizeof(m_sz_empid), lemp_empidStatus, TRUE)    ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_sz_fname, 
             sizeof(m_sz_fname), lemp_fnameStatus, TRUE)    ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_sz_lname, 
             sizeof(m_sz_lname), lemp_lnameStatus, TRUE)
       
    END_ADO_BINDING()public:   CHAR  m_sz_empid[10];
       ULONG lemp_empidStatus;
       CHAR   m_sz_fname[40];
       ULONG  lemp_fnameStatus;
       CHAR   m_sz_lname[41];
       ULONG  lemp_lnameStatus;};
      

  3.   

    给你源码!http://www.codeproject.com/database/caaadoclass1.asp