绑定一个数据库里的表格到一个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自动生成,如果可以的话,应该怎样操作呢?
{
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自动生成,如果可以的话,应该怎样操作呢?
{
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自动生成,如果可以的话,应该怎样操作呢?
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;};