VC6Êý¾Ý¿â×ۺϿª·¢×ÊÁÏ
Ŀ¼
ÓÃVC++6.0¿ª·¢¶à±íÁª½ÓµÄÊý¾Ý¿âÓ¦ÓóÌÐò
¡¶Ê¹ÓÃOLEDB±àдÊý¾Ý¿âÓ¦ÓóÌÐò¡·
¡¶ÔÚVisual C++ÖÐÓÃADO½øÐÐÊý¾Ý¿â±à³Ì¡·
¡¶ÓÃVisual C++¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò¡·
ÔÚVCÖÐʹÓÃADO¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò
ÓÃVC ¿ª ·¢ »ù ÓÚORACLE Êý ¾Ý ¿â Ó¦ Óà ³Ì Ðò µÄ Á½ ÖÖ ·½ ·¨
ÀûÓÃVC++»ñÈ¡Òì¹¹ÐÍÊý¾Ý¿â¿â½á¹¹ÐÅÏ¢
classes for direct sql calls with odbc
sample database program using dialog interface
ÔÚVCÖÐʹÓÃADO¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò
ÓÃISAPIºÍDAOʵÏÖAccessÊý¾Ý¿âWebͨÓòéѯ
VC++5.0ÏÂCGridCtrlÀàµÄ½¨Á¢ÓëÓ¦ÓÃ
ÓÃVisual C++¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò
ÕªÒª ±¾ÎĽéÉÜÁËÓÃVisual C++6.0¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐòʱ£¬Ê¹ÓÃMFC
ODBCÀàµÄ±à³Ì·½·¨£¬Ïêϸ˵Ã÷ÁËÔÚMFC ODBCµÄÅÉÉúÀàÖÐÉèÖÃSQLÓï¾ä²ÎÊýµÄ·½·¨£¬ÊµÏÖÁ˶þ¸ö±íµÄ¹ØÁª¡£
¹Ø¼ü×Ö Êý¾Ý¿â £¬¶à±íÁª½Ó£¬MFC ODBC
1£®ÒýÑÔ
¡¡¡¡¿ª·¢£×indowsÓ¦ÓóÌÐòʱ£¬ÔںܶàÇé¿öÏ¿ÉÄÜÒªºÍÊý¾Ý¿âÁ¬½Ó¡£Êý¾Ý¿âÀàÐͶàÖÖ¶àÑù£¬¹¦ÄܽṹҲ¸÷²»Ïàͬ¡£´Ó±È½Ï¼òµ¥µÄDBASE¡¢FoxProµÈµ½¸´ÔÓµÄSYBASE¡¢QracleµÈ´óÐÍÊý¾Ý¿âϵͳ¡£VC++6.0¶¼ÌṩÁËһЩ½Ó¿Ú¡£³ÌÐòÔ±¿ÉÀûÓÃÕâЩ½Ó¿Ú·½±ãµØ¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò¡£MFC
ODBCÀà¾ÍÊÇÆäÖеÄÒ»¸ö£¬ÔÚ¿ìËÙÉú³É¼òµ¥Ò»ÖµĽӿÚÓ¦ÓóÌÐò·½ÃæÕâЩÀà·Ç³£ÓÐÓá£Óû§²»±ØÁ˽âODBC APIºÍSQLµÄ¾ßÌåϸ½Ú£¬ÀûÓÃODBCÀ༴¿ÉÍê³É¶ÔÊý¾Ý¿âµÄ´ó²¿·Ö²Ù×÷¡£È»¶ø£¬VC++
Appwizard Éú³ÉµÄÊý¾Ý¿âÓ¦ÓóÌÐò£¬Ö»ÊÇ»ùÓÚµ¥¸öÊý¾Ý±íµÄÊý¾Ý¿âÓ¦ÓóÌÐò¡£¶øÊµ¼ÊÓ¦ÓÃÖУ¬ÍùÍùÒªÇóÊý¾Ý¿âÓ¦ÓóÌÐòÄܹØÁª¶þ¸ö»ò¶à¸öÊý¾Ý±í¡£VC++µÄºÃ¶àÊé¼®¶Ô´ËÖ»ÊǼòµ¥µÄ½éÉÜ¡£±¾ÎÄ͸³¹µØ½â¾öÕâÒ»ÎÊÌâ¡£
2£®ODBCÓëMFC
2£®1 ODBC
¡¡¡¡ODBC(¿ª·ÅÊý¾Ý¿â»¥Á¬)Ó¦ÓóÌÐò¿Éͨ¹ýODBCAPI·ÃÎʲ»Í¬Êý¾ÝÔ´ÖеÄÊý¾Ý£¬Ã¿¸ö²»Í¬µÄÊý¾ÝÔ´ÀàÐÍÓÉÒ»¸öODBCÇý¶¯³ÌÐòÖ§³Ö£¬Õâ¸öÇý¶¯³ÌÐòÍê³ÉÁËODBC
API³ÌÐòµÄºËÐÄ£¬²¢Óë¾ßÌåµÄÊý¾Ý¿âͨÐÅ¡£ODBC»·¾³ÌṩÁËÇý¶¯³ÌÐò¹ÜÀíÆ÷(Driver Manager)£¬¹ÜÀíÄÇЩÓ벻ͬÊý¾ÝÔ´Á¬½ÓµÄÇý¶¯³ÌÐòÔÚODBC32.DLLÖÐÖ´ÐС£Ó¦ÓóÌÐòÖ»ÐèÒªÓëÇý¶¯³ÌÐò¹ÜÀíÆ÷Á¬½Ó£¬Çý¶¯³ÌÐò¹ÜÀíÆ÷¾Í»á¸ù¾ÝÓ¦ÓóÌÐòÌṩµÄÊý¾ÝÔ´Ãû£¬Ñ¡ÔñÕýÈ·µÄÇý¶¯³ÌÐòÀ´·ÃÎÊÊý¾ÝÔ´¡£
¡¡¡¡ÒªÊ¹ÓÃODBCÀ´¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò£¬±ØÐëʹÓÃÔÚ¿ØÖÆÃæ°å´¦µÄODBCÊý¾ÝÔ´¹ÜÀíÆ÷£¬À´½¨Á¢¡¢ÅäÖÆÊý¾ÝÔ´¡£Ó¦±¾ÀýÓ¦ÓóÌÐòÐèÒª£¬°´ÒÔϲ½Ö轨Á¢ËùÐèµÄÊý¾ÝÔ´¡£
1£® Ë«»÷¿ØÖÆÃæ°å´¦µÄ32λµÄODBC³ÌÐò£¬Ñ¡Ôñ¶Ô»°¿òÖеÄUser DSN£¨Óû§Êý¾ÝÔ´Ãû£©Ñ¡Ï¡£
2£® µ¥»÷Add°´Å¥£¬È»ºóÑ¡ÔñÒ»¸öÊý¾ÝÔ´£ºMicrosoft Visual FoxPro Driver¡£µ¥»÷¡°Íê³É¡±£¬½øÈëÏÂÒ»²½ÉèÖá£
3£® ÔÚData Source NameÓòÄÚÊäÈëÊý¾ÝÔ´Ãû£ºDB-FSB¡£È»ºóÑ¡ÔñVisual FoxProÊý¾Ý¿âµÄλÖá£
4£® µ¥»÷OK°´Å¥£¬·µ»Øµ½¿ØÖÆÃæ°å¡£
2£®2 MFC ODBC
¡¡¡¡MFCµÄÊý¾Ý¿âÀ©Õ¹²¿·Ö·â×°ÁËʹÓÃODBCÊý¾Ý×ÊÔ´µÄϸ½Ú£¬ÌṩÁËVC++ÓëODBC¼äÒ»ÖÖ¼òµ¥µÄµ÷Óýӿڡ£MFCµÄODBCÀàÖ÷Òª°üÀ¨£ºÓÃÀ´ÓëÒ»¸öÊý¾ÝÔ´ÏàÁ¬µÄCDatabaseÀࣻÓÃÀ´´¦Àí´ÓÊý¾Ý¿â·µ»ØµÄÒ»×é¼Ç¼¼¯µÄCRecordsetÀࣻ¼ò»¯´ÓCrecordset¶ÔÏóÖеõ½Êý¾ÝµÄÏÔʾµÄCRecordViewÀà¡£
¡¡¡¡ËäÈ»CdatabaseÀàÔÊÐíÄã¶ÔÒ»¸öÊý¾Ý¿âÖ´ÐÐSQLÓï¾ä£¬µ«ÊÇCRecordsetÀàÌṩÁËÓ¦ÓóÌÐòÓëÊý¾Ý½»»¥µÄʵÖÊ¡£±¾ÀýÓ¦ÓóÌÐòʹÓÃCRecordsetÀàÀ´²Ù×÷Êý¾ÝÔ´.
CRecordsetÀàµÄÖ÷ҪĿµÄÊÇÈÃÓ¦ÓóÌÐò·ÃÎÊ´ÓÊý¾Ý¿âÖзµ»ØµÄ½á¹û¼¯¡£ÔÚÓ¦ÓóÌÐòÖÐҪʹÓÃCRecordsetÀ࣬¿É¸ù¾ÝÊý¾ÝÔ´²¢Ê¹ÓÃVC++ÖеÄClassWizardÀ´´´½¨CrecordsetÅÉÉúÀࡣͨ³££¬Ò»¸öCRecordsetÅÉÉúÀà¶ÔÓ¦Óû§Êý¾ÝÔ´ÖеÄÒ»¸ö±í¡£Ã¿Éú³ÉÒ»¸öCrecordsetÅÉÉúÀ࣬¾ÍҪѡÔñÒ»¸öÊý¾ÝÔ´ºÍÒ»¸öÊý¾ÝÔ´ÖеÄÒ»¸ö±í¡£ÈôÉú³ÉÒ»¸öCrecordsetÅÉÉúÀàʱ£¬Ñ¡ÔñÁËÒ»¸öÊý¾ÝÔ´ÖеĶà¸ö±í£¬ÄÇôCrecordsetÅÉÉúÀàÖеĽá¹û¼¯ÊǶà¸ö±íµÄ¿¨ÊÏ»ý£¨µÏ¿¨¶û»ý£©Á¬½Ó£¬ÏÔÈ»£¬ÔÚʵ¼ÊÓ¦ÓÃÖÐûʲôÒâÒå¡£Ó¦ÓóÌÐòͨ¹ýÅÉÉú³öµÄCrecordsetÀà¿É¶Ô¼Ç¼¼¯ÖеļǼ½øÐйö¶¯¡¢Ð޸ġ¢Ôö¼ÓºÍɾ³ýµÈ²Ù×÷¡£
¡¡¡¡CRecordViewÀà¾ßÓм¸¸öÔöÇ¿¹¦ÄÜ£¬ÔÊÐíʹÓöԻ°¿ò·½Ê½£¨DoDataExchange()º¯Êý£©Ö±½Ó´Ó¼Ç¼¼¯ÏÔʾÊý¾Ý£¬Ê¹µÃ´Ó¼Ç¼¼¯ÖÐÏÔʾÊý¾Ý¸üΪÈÝÒס£²¢ÌṩÁ˼ÇÂ¼ÒÆ¶¯µÈ²Ù×÷¡£
3£® ¶à±íÁª½ÓµÄÊý¾Ý¿âÓ¦ÓóÌÐò
3£® 1±¾Àý³ÌÐò¹¦ÄÜ£º
ͨ¹ýFSB±íµÄBZM×ֶμ°DBK1±íµÄHH×ֶΣ¬½«Visual FoxPro µÄ FSB±íÓëDBK1±í£¨½á¹¹ÈçÏ£©¹ØÁªÆðÀ´¡£³ÌÐòÔËÐгöÏÖ½çÃæÈçͼ1¡£ÓÃÊó±êµã»÷¹¤¾ßÌõµÄ?¡¢?¡¢(¡¢(ÔòFSB±í¼ÇÂ¼ÒÆ¶¯¶øDBK1±íµÄ¼ÇÂ¼Ã»ÒÆ¶¯¡£ÓÃÊó±êµã»÷¡°¹ØÁª¡±°´Å¥£¬ÔòDBK1±íµÄ¼Ç¼ºÍFSB±í¼Ç¼ͬ²½Òƶ¯£¨BZM±à¼¿òÄÚÈÝÓëHH±à¼¿òÄÚÈÝÏàͬ£©¡£Èç¹û£¬ÒªÇó°´ÕÕ¾ßÌåµÄ¹Ø¼ü×ÖÖµÀ´²éѯ¶þ¸ö±íÖеÄÏà¹Ø¼Ç¼£¬ÄÇô£¬ÔÚ¡°¶¨Î»¡±
±à¼¿òÖÐÊäÈë¾ßÌåµÄ¹Ø¼ü×ÖÖµ£¬È»ºó£¬ÓÃÊó±êµã»÷¡°¹ØÁª¡±°´Å¥£¬¾Í»á¼ûµ½¶þ¸ö±íÔÚеļǼ¼¯ÊµÏÖ¹ØÁª¡£
±í1£º FSB±í½á¹¹
×Ö¶ÎÃû
ÀàÐÍ
±¸×¢
BZM
C
Ë÷Òý¹Ø¼ü×Ö
DGDL1
N
DGZD1
N
ÆäËü×Ö¶Î
±í2£º DBK1±í
×Ö¶ÎÃû
ÀàÐÍ
±¸×¢
HH
C
Ë÷Òý¹Ø¼ü×Ö
BL
N
ZZCM
C
ÆäËü×Ö¶Î
¡¡¡¡»ùÓÚMFC ODBCÀ࿪·¢µÄÊý¾Ý¿âÓ¦ÓóÌÐò£¬ÊÇͨ¹ýMFC ODBCÀàʹÓÃSQLÓï¾ä·½Ê½²Ù×ÝÊý¾Ý±íµÄ¡£Êý¾Ý¿âÖбíFSBÓë±íDBK1¹ØÁª²éѯµÄSQLÓï¾äÊÇ£º
SELECT * FROM FSB£¬DBK1 WHERE FSB.BZM=DBK1.HH
ÓÉÓÚ´´½¨Ò»¸öCRecordsetÅÉÉúÀàʱ£¬Ò»°ãֻѡÔñÒ»¸öÊý¾ÝÔ´ÖеÄÒ»¸ö±í£¬Òò´Ë»ùÓÚMFC ODBCÀ࿪·¢µÄÊý¾Ý¿âÓ¦ÓóÌÐòҪʵÏÖ¶þ¸ö±í¹ØÁª£¬¾ÍҪʹÓÃCRecordsetÀàµÄ²ÎÊým
_strFilter¡£ËüÏ൱ÓÚSQLÓï¾äÖеÄWHERE×Ӿ䡣²ÎÊým _strSortÏ൱ÓÚSQLÓï¾äÖеÄGROUP BY×Ӿ䡣ҪעÒâm_strFilter×Ö·û´®Öв»Òª°üº¬¡°WHERE¡±¹Ø¼ü×Ö¡£±¾ÀýÔÚ±íFSBÓë±íDBK1¶ÔÓ¦µÄCRecordsetÅÉÉúÀàÖзֱðʹÓÃÁËmbzmºÍmhh¶þ¸öm
_strFilter²ÎÊý¡£ÓÃÊó±êµã»÷¡°¹ØÁª¡±°´Å¥Ê±£¬³ÌÐòÊ×Ïȸù¾Ý¡°¶¨Î»¡± ±à¼¿òÖеÄÄÚÈÝ×÷ΪmbzmµÄÖµ£¬ÔÚ±íFSB¼ìË÷½á¹û¼¯¡£±íDBK1¶ÔÓ¦µÄCRecordsetÅÉÉúÀà¸ù¾Ý±íFSB¶ÔÓ¦µÄCRecordsetÅÉÉúÀàµÄµ±Ç°¼Ç¼m_bzmÖµ£¬×÷ΪmhhµÄֵʵÐмìË÷£¬´Ó¶øµÃµ½Óë±íFSB¹Ø¼ü×Ö¶ÎBZM¶ÔÓ¦µÄ±íDBK1µÄ¼Ç¼¡£ÊµÏÖÁ˱íFSBÓë±íDBK1µÄ¹ØÁª¡£Óɴ˿ɼû£¬¶þ±í¹ØÁªµÄ¹Ø¼üÊÇm
_strFilter²ÎÊýµÄÉèÖá£
ͼ 1
3£®2 Êý¾Ý¿âÓ¦ÓóÌÐò´´½¨
3£®2£® 1 ´´½¨µ¥±íµ¥ÎĵµµÄÊý¾Ý¿âÓ¦ÓóÌÐò
¸ù¾ÝÇ°Ãæ½¨Á¢µÄÊý¾ÝÔ´DB-FSB£¬Ê¹ÓÃVC++ Appwizard Éú³ÉÒ»¸öµ¥±íµ¥¡¢µ¥ÎĵµµÄÊý¾Ý¿âÓ¦ÓóÌÐò¡£Ñ¡ÔñÊý¾ÝÔ´DB-FSBµÄÊý¾Ý±íʱӦѡÔñFSB.DBF¡£Ó¦ÓóÌÐòÃûΪZF0001£¨¾ßÌå²½Öè¿É²Î¿¼ÓйØVC++×ÊÁÏ£©¡£ZF0001Ó¦ÓóÌÐòÖд´½¨ÁËCZf0001Doc¡¢CZf0001Set¡¢CZf0001ViewµÈÅÉÉúÀà¡£
3£®2£®2 ÉèÖÃm _strFilter²ÎÊý
ÔÚÉÏÒ»²½Éú³ÉµÄCZf0001SetÀàÖУ¬°´ÒÔÏ·½Ê½£¬ÔÚ¢Ù ¢Ú ¢Û³ÌÐòÖÐÉèÖÃm _strFilter²ÎÊý£¨ºÚÌ岿·ÖµÄÓï¾ä¶¼ÊÇΪCZf0001SetµÄ²ÎÊýmbzm¶øÊÖ¶¯Ôö¼ÓµÄ£©¡£Îª½Úʡƪ·ù£¬Ê¡ÂÔ³ÌÐòÇåµ¥µÄ²¿·ÖÄÚÈÝ¡£
¢Ù£® ÔÚCrecordsetÅÉÉúÀàµÄ¶¨ÒåÖУ¬ÃèÊöÁ˱»Á¬½ÓµÄÊý¾ÝÔ´±íµÄ×ֶΣ¬²¢ÔÚVC++ Appwizard Éú³ÉµÄ³ÌÐò×¢ÊÍ¡°// Field/Param
Data ¡±ÖÐÌáʾÔڴ˿ɶ¨Òå²ÎÊý¡£
CRecordsetÅÉÉúÀࣺCZf0001SetµÄ¶¨Òå
class CZf0001Set : public Crecordset //CrecordsetÅÉÉúÀàCZf0001Set
{
public:
CZf0001Set(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CZf0001Set)
// Field/Param Data
//{{AFX_FIELD(CZf0001Set, CRecordset) //±»°ó¶¨µÄ×Ö¶Î
CString m_bzm;
CString m_dgqd1;
¡¢¡¢¡¢¡¢¡¢¡¢ //Ϊ½Úʡƪ·ù£¬Ê¡ÂÔ²¿·Ö×Ö¶Î
CString m_bz;
//}}AFX_FIELD
CString mbzm; // ²ÎÊýmbzm
// Overrides
// ClassWizard generated virtual function overrides
¡¢¡¢¡¢¡¢¡¢¡¢¡¢
virtual void Dump(CDumpContext& dc) const;
#endif
};
¢Ú£®CrecordsetÅÉÉúÀࣺCZf0001SetµÄ¹¹Ô캯Êý
ÆäÖУ¬¶Ô±»°ó¶¨×ֶεÄÏàÓ¦ÄÚ´æ±äÁ¿½øÐÐÁ˳õʼ»¯¡£
CZf0001Set::CZf0001Set(CDatabase* pdb) : CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CZf0001Set)
m_bzm = _T("");
m_dgqd1 = _T("");
¡¢¡¢¡¢¡¢¡¢¡¢
m_bz = _T("");
m_nFields = 16; //Êý¾ÝÔ´±íµÄ¼Ç¼×ֶθöÊý
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
m_nParams=1; // CZf0001SetµÄ²ÎÊý¸öÊý
mbzm=""; //²ÎÊý³õʼ»¯
}
¢Û£®¼Ç¼×ֶν»»»£¨RFX£©
ͨ¹ýʹÓÃRFX£¬MFC¿ò¼Ü¿ÉÒÔÔÚÊý¾Ý¿âºÍCRecordsetÀà±äÁ¿Ö®¼ä½»»»¡£½»»»ÊÇͨ¹ýÖ´ÐÐDoFieldExchange£¨£©º¯Êý¶ø½¨Á¢µÄ¡£
void CZf0001Set::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CZf0001Set)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[bzm]"), m_bzm);
RFX_Text(pFX, _T("[dgqd1]"), m_dgqd1);
¡¢¡¢¡¢¡¢¡¢¡¢;
RFX_Text(pFX, _T("[dgdl2]"), m_dgdl2);
RFX_Text(pFX, _T("[bz]"), m_bz);
//}}AFX_FIELD_MAP
pFX->SetFieldType(CFieldExchange::param);
//°Ñ×Ö¶ÎÀàÐÍÉèΪCFieldExchange::param
RFX_Text(pFX,"mbzm",mbzm); //Ϊ²ÎÊýÉèÖÃRFX ºê£¬Èç¹ûÓжà¸ö²ÎÊý£¬±ØÐë°´SQLµÄÓï¾äÖеÄλÖñêÖ¾·ûµÄ˳ÐòÉèÖã¬RFX
ºêÖеIJÎÊýµÄÃû×ÖÈç"mbzm"£¬²¢·ÇÓÃÀ´Óë²ÎÊýÆ¥Å䣬¿ÉÒÔ×Ô¼º¶¨Òå¡£
}
3£®2£®3 Ôö¼ÓµÚ¶þ¸ö±í£¬²¢ÉèÖõڶþ¸ö±íµÄ²ÎÊý
ÔÚ3¡£2¡£1´´½¨µÄÊý¾Ý¿âÓ¦ÓóÌÐò»ù´¡ÉÏ£¬½øÈëClassWizard£¬µã»÷Add Class...°´Å¥²¢ÔÚµ¯³öµÄ²Ëµ¥ÖÐÑ¡ÔñNew...£¬È»ºóÔÚCreate
New Class¶Ô»°¿òÖеÄNameÀ¸ÖÐÊäÈëCZf1001£¬ÔÚBase classÀ¸ÖÐÑ¡ÔñCRecordset£¬°´Create°´Å¥¡£
ÔÚµ¯³öµÄDatabase Options¶Ô»°¿òÖУ¬ÔÚODBC×éºÏ¿òÀïÑ¡ÔñDB-FSBÊý¾ÝÔ´¡£È»ºó°´OK°´Å¥¡£ÔÚµ¯³öµÄSelect Database
Tables¶Ô»°¿òÖÐÑ¡ÔñDBK1±í¡£°´OKÈ·ÈÏ¡£²¢ÔÚËùÓдæÔÚ #include "CZf0001Set.h" µÄÎļþÖУ¬¶¼¼ÓÈë#include
"CZf1001.h" ¡£ÕâÑù¾Í´´½¨ÁËÓëDBK1±í¶ÔÓ¦µÄCrecordsetÅÉÉúÀà¡£
ÔÚµÚÒ»²½´´½¨µÄCZf0001DocÀàÖУ¬Ôö¼ÓÒ»¸öCZf1001 ¶ÔÏóµÄÖ¸Õë±äÁ¿m_zf1002£¨¼´£ºCZf1001* m_zf1002£©¡£
°´3.2.2½éÉܵÄCZf0001SetÀàm _strFilter²ÎÊýµÄÉèÖ÷½·¨£¬ÔÚCZf1001ÀàÖУ¬ÉèÖòÎÊýmhh¡£
3£® 3 ²ÎÊýmhh¼°²ÎÊýmbzmÔÚCrecordViewµÄÅÉÉúÀàCZf0001ViewÖеÄʹÓÃ
3£®3£®1 ²ÎÊýÔÚCZf0001View::OnInitialUpdate()º¯ÊýʹÓÃ
ÔÚCZf0001View::OnInitialUpdate()º¯ÊýµÄ¿ªÍ·²¿·Ö£¬µ÷ÓÃCZf0001View:: GetDocument()´ÓÎĵµÀàCZf0001DocÀàÖУ¬·µ»Ø¶þ¸öCrecordSetÀࣨCZf0001Set¡¢CZf1001£©µÄÖ¸Õë¡£¸ù¾Ý·µ»ØµÄÖ¸Õ룬ÉèÖÃm
_strFilter (Ï൱ÓÚSQLÓï¾äµÄWHERE×Ó¾ä)£¬²¢È·¶¨¶þ¸ö²ÎÊýµÄ³õʼֵ¡£ÕâÀïҪ˵Ã÷Ò»µã£º
m_pSet->m_strFilter="BZM like ?";
m_pSet2->m_strFilter="hh like ?";
Óï¾äÖеġ°£¿¡±£¬ÔÚµ÷ÓÃOpen»òRequeryʱ£¬¡°?"½«·Ö±ð×Ô¶¯µØ±»CZf0001Set::mbzmºÍ CZf1001::mhhµÄֵȡ´ú¡£ÀýÈ磬ָ¶¨mbzmΪ¡°31001"£¬Ôòm_pSet->m_strFilter½«±ä³É"BZM
=31001"¡£ÕâÑùÓû§Ö»ÒªÖ¸¶¨ÁËmbzm£¬¾Í¿ÉÒԵõ½ËùÐèÒªµÄ¼Ç¼¼¯¡£CZf0001View::OnInitialUpdate()µÄ³ÌÐòÇåµ¥ÈçÏ£¨ºÚÌ岿·ÖµÄÓï¾äÊÇÊÖ¹¤Ôö¼ÓµÄ£©£º
void CZf0001View::OnInitialUpdate()
{ m_pSet = &GetDocument()->m_zf0001Set;
m_pSet2=&GetDocument()->m_zf1002;
if(!m_pSet2->Open())
return;
m_pSet->m_strFilter="BZM like ?";
m_pSet->mbzm= "%"; //³õʼѡÔñËùÓмǼ
m_pSet->m_strSort="";
m_pSet2->m_strFilter="hh like ?";
m_pSet2->mhh=m_pSet->m_bzm; //½«±íFSB¶ÔÓ¦µÄCRecordsetÅÉÉúÀàµÄm_bzmµÄÖµ£¬×÷Ϊ²ÎÊýmhhµÄÖµ¡¡
m_pSet2->m_strSort=""; ¡¡//¼ìË÷µÄ½á¹û²»½øÐÐÅÅÐò
m_pSet->m_pDatabase= m_pSet2->m_pDatabase; //¹²ÏíCDatabase
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
3£®3£®2 ÔÚ¶Ô»°¿òÖмÓÈë±à¼¿ò
ÔÚ×ÊÔ´ÊÓͼDialogµÄIDD_ZF0001_FORM±íµ¥ÖУ¬¼ÓÈëÓû§ÐèÒªµÄ±à¼¿ò¡£ÓÃClassWizardÔÚµÚÒ»¸ö±íFSBÖÐÑ¡ÔñÓйØ×Ö¶ÎÓëËüÃÇÏàÁ¬¡£µ«ÊÇ.ʹÓÃClassWizardÎÞ·¨ÕÒµ½µÚ¶þ¸ö±íDBK1×ֶαäÁ¿£¬Òò´Ë£¬¶ÔÓڼƻ®ÓëµÚ¶þ¸ö±íDBK1×Ö¶ÎÏàÁ¬µÄ±à¼¿ò£¬±ØÐëÓÃÊÖ¹¤ÐÞ¸ÄCRecordViewÀàµÄDoDataExchange()(¶Ô»°¿òÊý¾Ý½»»»º¯Êý)¡£
ÔÚDoDataExchange()º¯Êý ¡°//}}AFX_DATA_MAP¡± ºóÃæ¼ÓÈëÓйØÄÚÈÝ¡£¼ûÏÂÃæ³ÌÐòµÄºÚÌ岿·Ö¡£Èç¹ûºÚÌ岿·ÖÓï¾ä¼ÓÔÚ¡°//}}AFX_DATA_MAP¡±µÄÇ°Ãæ,ÄÇô,ÒªÔÙ´ÎÐÞ¸ÄIDD_ZF0001_FORM±íµ¥Ê±,¾ÍÎÞ·¨Ê¹ÓÃClassWizard.
void CZf0001View::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CZf0001View)
DDX_Control(pDX, IDC_COMBO1, m_comb);
DDX_Control(pDX, IDC_EDIT4, m_SS);
DDX_FieldText(pDX, IDC_EDIT2, m_pSet->m_bl1, m_pSet);
DDX_FieldText(pDX, IDC_EDIT3, m_pSet->m_dgdl1, m_pSet);
DDX_FieldCBString(pDX, IDC_COMBO1, m_pSet->m_bzm, m_pSet);
DDX_FieldText(pDX, IDC_EDIT5, m_pSet->m_dgqd1, m_pSet);
//}}AFX_DATA_MAP
DDX_FieldText(pDX, IDC_EDIT1, m_pSet2->m_bl, m_pSet2);
DDX_FieldText(pDX, IDC_EDIT6, m_pSet2->m_hh, m_pSet2);
DDX_FieldText(pDX, IDC_EDIT7, m_pSet2->m_zzcm, m_pSet2);
}
3£®3£®3 ÔÚ¶Ô»°¿òÖмÓÈëÒ»¸ö°´Å¥
ΪÑÝʾ¶þ¸ö±í¹ØÁªµÄЧ¹û£¬ÔÚ¶Ô»°¿òÖмÓÈëÒ»¸ö¡°¹ØÁª¡±°´Å¥ºÍÒ»¸öÊäÈë²ÎÊýÓõÄ"¶¨Î»"±à¼¿ò¡£²¢¸ø´Ë°´Å¥Ôö¼Óµ¥»÷ʼþ´úÂëÈçÏÂ:
void CZf0001View::OnButton1()
{
// TODO: Add your control notification handler code here
char ll[11];
int nn=0;
m_SS.GetLine(0,ll); //¶Á¡°¶¨Î»¡±±à¼¿òÖеÄÄÚÈÝ
nn=m_SS.LineLength(0); //¶Á¡°¶¨Î»¡±±à¼¿òÖеÄ×Ö·ûÄÚÈݵij¤¶È
if(nn) //¡°¶¨Î»¡±±à¼¿òÖÐÓÐÊäÈëÄÚÈÝ£¬Ôò°´ÄÚÈݼìË÷ÐγÉеļǼ¼¯
{ m_pSet->mbzm=(CString)ll;
m_pSet->mbzm=m_pSet->mbzm.Left(nn)+"%"; //¡°%¡±ÓÉSQLÓï·¨¹æ¶¨´ú±íÈÎÒⳤ¶È£¨³¤¶È¿ÉÒÔΪ0£©µÄ×Ö·û´®
m_pSet->Requery(); //ÔÚ±íFSBÖÐÖØÐ¼ìË÷
if(m_pSet->IsEOF())
{ MessageBox("¼ìË÷½á¹ûΪ¿Õ!");
UpdateData(FALSE);
m_pSet->mbzm="%";
m_pSet->Requery();
}
m_pSet2->Requery(); //ÒÔ±í1µ±Ç°¼Ç¼BZMÖµ£¬ÔÚ±í2£ºDBK1ÖмìË÷
UpdateData(FALSE); //Ë¢ÐÂ±íµ¥ÄÚÈÝ
m_SS.SetSel(0,-1);
m_SS.ReplaceSel(""); //Çå³ý¡°¶¨Î»¡±±à¼¿òÖеÄÄÚÈÝ£¬Ê¹ÏÂÒ»´Îµ¥»÷¡°¹ØÁª¡±°´Å¥Ê±£¬²»»áÖØ¸´¼ìË÷£¨¼´Ê¹nn=0£©
}
else //¡°¶¨Î»¡±±à¼¿òΪ¿Õ£¬Ôò°´±í1ÏÖÓеĽá¹û¼¯Óë±í2£ºDBK1¹ØÁª
{
m_pSet2->mhh=m_pSet->m_bzm; //½«±í1µ±Ç°¼Ç¼BZMÖµ£¬×÷Ϊ±íDBK1µÄ²éÕÒ²ÎÊý
m_pSet2->Requery();
UpdateData(FALSE);
m_pSet->MoveNext();
}
}
4£® С½á
ͨ¹ý±¾Àý¿ÉÖª£¬ËäÈ»VC++ÌṩÁËAppwizardºÍClasswizard, Ϊ±à³ÌÕß½ÚÊ¡ÁË´óÁ¿µÄ¹¤×÷£¬µ«ÊÇÏë±à³öÓÅÐãµÄVC++Ó¦ÓóÌÐò,½öƾÕâЩÊÇÔ¶Ô¶²»¹»µÄ;±ØÐëÊìϤMFCÀà¿â¡¢ActiveX¿Ø¼þµÈ֪ʶ¡£±¾ÎÄ×÷Ϊһ¸öÀý×Ó½éÉÜÁ˶þ¸ö±íµÄÁª½Ó·½·¨¡£ÔÚʵ¼ÊµÄÓ¦ÓÃÖУ¬¶ÁÕß¿ÉÒÔ¾ÙÒ»·Èý£¬±àÖÆ¸ü¼ÓÍêÉÆµÄÊý¾Ý¿âÓ¦ÓóÌÐò¡£
²Î¿¼ÎÄÏ×
1. ¿µ²©´´×÷ÊҵȱàÖø. Visual C++6.0 ¸ß¼¶¿ª·¢½Ì³Ì. ÈËÃñÓʵç³ö°æÉç
2. ÆëÊæ´´×÷ÊÒ ±àÖø. Visual C++6.0±à³Ì¼¼ÇÉÓëʵÀý·ÖÎö. ÖйúË®ÀûË® µç³ö°æÉç
3. ¹ÙÕÂÈ« Áõ¼ÓÃ÷±àÖø. Visual C++6.0 Àà¿â´óÈ«. µç×Ó¹¤Òµ³ö°æÉç
¡¡¡¡Õª×Ô¡¶Èí¼þÊÀ½ç¡·¡¡
|
|
|
¡¶ÔÚVisual C++ÖÐÓÃADO½øÐÐÊý¾Ý¿â±à³Ì¡· |
|
ÈÕÆÚ£º2001.11.10 ä¯ÀÀ£º11 |
|
|
|
¡¡¡¡ActiveXÊý¾Ý¶ÔÏó£¨ADO£©ÊÇOLE DBÉÏÃæµÄ¸ß²ãÊý¾Ý¿âAPI¡£ÎÒÃÇÔÚC£«£«³ÌÐòÖÐÒ²¿ÉÒÔµ÷ÓÃADO¡£±¾ÎĽ«ÔÚVC 6.0»·¾³ÏÂ×öÒ»¸öССµÄÀý×Ó½âÊÍÈçºÎʹÓÃADO¡£ |
DAO¼¼Êõ
DAO¼¼Êõ
4£®1 DAOÓëODBC
ÔÚWINDOWS»·¾³Ï½øÐÐÊý¾Ý¿â·ÃÎʹ¤×÷ÄúÓÐÁ½ÖÖÑ¡Ôñ£ºÊ¹ÓÃDAO¼¼Êõ»òÕßʹÓÃODBC¼¼Êõ¡£ODBC£¨OPEN DATABASE CONNECTIVITY£©¼´¿ª·ÅʽÊý¾Ý¿â»¥Áª£¬×÷ΪWINDOWS¿ª·Å–Ó×¼½á¹¹µÄÒ»¸öÖØÒª²¿·ÖÒѾΪºÜ¶àµÄWINDOWS³ÌÐòÔ±ËùÊìϤ¡£DAO£¨DATA ACCESS OBJECTS£©¼´Êý¾Ý·ÃÎʶÔÏ󼯣¨DATA ACCESS OBJECTS£©ÊÇMICROSOFTÌṩµÄ»ùÓÚÒ»¸öÊý¾Ý¿â¶ÔÏ󼯺ϵķÃÎʼ¼Êõ¡£ËüÃǶ¼ÊÇWINDOWS APIµÄÒ»¸ö²¿·Ö£¬¿ÉÒÔ¶ÀÁ¢ÓÚDBMS½øÐÐÊý¾Ý¿â·ÃÎÊ¡£ÄÇôODBCºÍDAOµÄÇø±ðÔÚÄÄÀïÄØ£¿ODBCºÍDAO·ÃÎÊÊý¾Ý¿âµÄ»úÖÆÊÇÍêÈ«²»Í¬µÄ¡£ODBCµÄ¹¤×÷ÒÀÀµÓÚÊý¾Ý¿âÖÆÔìÉÌÌṩµÄÇý¶¯³ÌÐò£¬Ê¹ÓÃODBC APIµÄʱºò£¬WINDOWSµÄODBC¹ÜÀí³ÌÐò£¬°ÑÊý¾Ý¿â·ÃÎʵÄÇëÇ󴫵ݸøÕýÈ·µÄÇý¶¯³ÌÐò£¬Çý¶¯³ÌÐòÔÙʹÓÃSQLÓï¾äָʾDBMSÍê³ÉÊý¾Ý¿â·ÃÎʹ¤×÷¡£DAOÔòÈÆ¿ªÁËÖм价½Ú£¬Ö±½ÓʹÓÃMICROSOFTÌṩµÄÊý¾Ý¿âÒýÇæ£¨MICROSOFT JET DATABASE
ENGINE£©ÌṩµÄÊý¾Ý¿â·ÃÎʶÔÏ󼯽øÐй¤×÷¡£ËٶȱÈODBC¿ì¡£Êý¾Ý¿âÒýÇæÄ¿Ç°ÒѾ´ïµ½ÁË3.0°æ±¾¡£ËüÊÇDAO¡¢MS ACCESS¡¢MS VISUAL BASICµÈµÈWINDOWSÓ¦ÓýøÐÐÊý¾Ý¿â·ÃÎʵĻù´¡¡£ÒýÇæ±¾ÉíµÄÊý¾Ý¿â¸ñʽΪMDB£¬Ò²Ö§³Ö¶ÔĿǰÁ÷Ðеľø´ó¶àÊýÊý¾Ý¿â¸ñʽµÄ·ÃÎÊ£¬µ±È»MDBÊÇÊý¾Ý¿âÒýÇæÖÐЧÂÊ×î¸ßµÄÊý¾Ý¿â¡£
Èç¹ûÄúʹÓÿͻ§»ú/·þÎñÆ÷Ä£Ð͵ϰ£¬½¨ÒéÄúʹÓÃODBC·½°¸£»Èç¹ûÄúÏ£Íû²ÉÓÃMDB¸ñʽµÄÊý¾Ý¿â£¬»òÕßÀûÓÃÊý¾Ý¿âÒýÇæµÄËÙ¶È£¬ÄÇôDAOÊǸüºÃµÄÑ¡Ôñ¡£
4£®2 ʹÓÃMFCʵÏÖDAO¼¼Êõ
MFC¶ÔËùÓеÄDAO¶ÔÏó¶¼½øÐÐÁË·â×°¡£Ê¹ÓÃMFC½øÐÐDAO±à³Ì£¬Ê×ÏÈҪΪÿһ¸ö´ò¿ªµÄÊý¾Ý¿âÎļþÌṩһ¸öÊý¾Ý¿â¶ÔÏ󩤩¤CDaoDatabase£¬ÓÉÕâ¸ö¶ÔÏó¹ÜÀíÊý¾Ý¿âµÄÁ¬½Ó¡£È»Éú³É¼Ç¼¼¯¶ÔÏ󩤩¤CDaoRecordset£¬Í¨¹ýËüÀ´½øÐвéѯ¡¢²Ù×÷¡¢¸üеȵȵŤ×÷¡£Èç¹ûÐèÒªÔÚ³ÌÐòÖйÜÀíÊý¾Ý¿âµÄ½á¹¹£¬ÔòÐèҪʹÓÃDAOµ±Öеıí½á¹¹ÐÅÏ¢¶ÔÏóCDaoTableInfo¼°×ֶζ¨Òå¶ÔÏóCDaoFieldInfoÀ´½øÐлñµÃ»òÕ߸ıäÊý¾Ý¿â±í½á¹¹µÄ¹¤×÷¡£CDaoDatabase¡¢CDaoRecordset¡¢CDaoTableDefInfo¡¢CDaoFieldInfoÊÇʹÓÃMFC½øÐÐDAO±à³ÌµÄ×î»ù±¾Ò²ÊÇ×î³£ÓõÄÀà¡£
ÏÂÃæ£¬ÎÒÃÇͨ¹ýÒ»¸öʵÀýÀ´½éÉÜÈçºÎʹÓÃMFCµÄDAOÀàÀ´½øÐÐÊý¾Ý¿â·ÃÎʵŤ×÷¡£ÔÚÕâ¸öʵÀýµ±ÖУ¬ÎÒÃǽ«ÔÚ³ÌÐòµ±Öн¨Á¢Ò»¸öѧÉúµµ°¸¹ÜÀíÊý¾Ý¿â£¬²¢Í¨¹ý¶Ô»°¿òÀ´Ìí¼Ó¡¢É¾³ýºÍä¯ÀÀ¼Ç¼¡£ÎÒÃÇÊ×ÏÈ¿´ÒÔϳÌÐòÔËÐеÄÇé¿ö¡£
ÎÒÃǽ«Õë¶Ô³ÌÐòµÄ¹¦ÄÜÒÀ´Î½éÉÜÈçºÎÉú³ÉºÍʹÓÃÊý¾Ý¿â¶ÔÏ󡢼Ǽ¼¯¶ÔÏóÒÔ¼°ÈçºÎͨ¹ý¼Ç¼¼¯À´²Ù×ÝÊý¾Ý¿â¡£ÎÒÃǽ«Í¨¹ý½âÊͶÔÊý¾Ý¿â½øÐвÙ×÷µÄÔ´³ÌÐòÀ´½éÉÜÈçºÎÓÃMFCÀ´ÊµÏÖDAO¼¼Êõ¡£
ÏÂÃæ½éÉÜÈçºÎ½¨¿â£º
Ê×ÏÈн¨Ò»¸öÊý¾Ý¿â¶ÔÏó¡£
newDatabase = new CDaoDatabase;
newDatabase_>Create(_T("stdfile.mdb"),
dbLangGeneral, dbVersion30);
ÀûÓÃÊý¾Ý¿âÒýÇæÔÚ´ÅÅÌÉϽ¨Á¢Ò»¸öMDB¸ñʽµÄÊý¾Ý¿âÎļþ¡£
stdfile.mdbÊÇÔÚ´ÅÅÌÉÏÃæ½¨Á¢µÄÊý¾Ý¿âÎļþµÄÃû×Ö£¬
dbLangGeneral ÊÇÓïÑÔÑ¡Ïî¡£
dbVersion30ÕâÊÇÊý¾Ý¿âÒýÇæ°æ±¾Ñ¡Ïî¡£
ͼ3.12
È»ºóн¨Ò»¸öÊý¾Ý¿â±í¶¨ÒåÐÅÏ¢¶ÔÏó¡£
CDaoTableDef *TableInfo;
TableInfo = new CDaoTableDef(newDatabase);
TableInfo_>Create(_T("student"));
н¨Ò»¸ö×ֶζ¨ÒåÐÅÏ¢¶ÔÏó¡£
°´ÒªÇóÌîд×ֶζ¨ÒåÐÅÏ¢¶ÔÏó¡£
¶¨Òå×Ö¶ÎÃû³Æ£º
FieldInfo_>m_strName = CString("studentName");
¶¨Òå×Ö¶ÎÀàÐÍ£º
FieldInfo_>m_nType = dbText;
¶¨Òå×Ö¶ÎËùÕ¼µÄ×Ö½ÚÊý´óС£º
FieldInfo_>m_lSize = 10;
¶¨Òå×Ö¶ÎÌØÐÔ£º
FieldInfo_>m_lAttributes = dbVariableField | dbUpdatableField;
dbVariableField²ÎÊýµÄÒâ˼ÊǸÃ×ֶεÄËùÕ¼µÄ×Ö½ÚÊýÊǿɱäµÄ¡£
dbUpdatableField²ÎÊýµÄÒâ˼ÊǸÃ×ֶεÄÖµÊǿɱäµÄ¡£
¸ù¾Ý×ֶζ¨Òå¶ÔÏóÔÚÊý¾Ý¿â±í¶ÔÏóµ±ÖÐÉú³É×ֶΡ£
TableInfo_>CreateField(*FieldInfo);
ÔÚÉú³ÉÁËËùÓеÄ×Ö¶ÎÖ®ºó£¬½«ÐµÄÊý¾Ý¿â±íµÄ¶¨ÒåÌî¼Óµ½Êý¾Ý¿â¶ÔÏóµ±ÖÐÈ¥¡£
TableInfo_>Append();
ÏÂÃæ½éÉÜÈçºÎ½øÐÐÊý¾Ý¿â²Ù×÷£º
Ê×ÏÈÉú³É¼Ç¼¼¯¶ÔÏó£º
Recordset = new CDaoRecordset(newDatabase);
È»ºóʹÓÃSQLÓï¾ä´ò¿ª¼Ç¼¼¯¶ÔÏó¡£Ê×ÏȰÑSQLÓï¾ä¼ÇÈëÒ»¸ö×Ö·û´®£º
CString strQuery = _T("Select * from student");
ʹÓÃÕâ¸ö×Ö·û´®´ò¿ª¼Ç¼¼¯¡£
Recordset_>Open(dbOpenDynaset , strQuery);
dbOpenDynaset²ÎÊýµÄÒâ˼ÊDZíʾ¼Ç¼¼¯´ò¿ªµÄÀàÐÍ¡£dbOpenDynasetµÄÒâ˼ÊÇ´ò¿ªÒ»¸ö¿ÉÒÔË«Ïò¹ö¶¯µÄ¶¯Ì¬¼Ç¼¼¯¡£Õâ¸ö¼Ç¼¼¯ÖеļǼÊÇʹÓÃÎÒÃǶ¨ÒåµÄSQLÓï¾ä¶ÔÊý¾Ý¿â½øÐвéѯµÃµ½µÄ¡£Õâ¸ö²ÎÊý»¹ÓÐÁíÍâµÄÁ½ÖÖÑ¡Ôñ£º
dbOpenTable²ÎÊýָʾ´ò¿ªÒ»¸öÊý¾Ý±íÀàÐ͵ļǼ¼¯£¬Ê¹ÓÃÕâÖÖÀàÐ͵ļǼ¼¯Ö»ÄܶԵ¥Ò»µÄÊý¾Ý¿âÖеļǼ½øÐвÙ×Ý¡£
Èç¹ûʹÓÃdbOpenSnapshot²ÎÊý±íʾ´ò¿ªµÄÊÇÓ³Ïñ¼Ç¼¼¯£¬Ëüʵ¼ÊÉÏÊÇËùÑ¡ÔñµÄ¼Ç¼¼¯µÄÒ»¸ö¾²Ì¬µÄ¿½±´£¬ÔÚÖ»ÐèÒª½øÐвéѯ²Ù×÷»òÕßÏ£ÍûÖÆ×÷±¨±íµÄʱºò£¬Ê¹ÓÃÕâÖּǼ¼¯±È½ÏºÏÊÊ£¬Ëü²»»á¶ÔÊý¾Ý¿âÖеÄÊý¾Ý½øÐÐÐ޸ġ£
½ÓÏÂÀ´¶Ô¼Ç¼¼¯µ±ÖеÄÒ»¸ö±ê־λ¸³Öµ£¬ËµÃ÷ÊÇ·ñÒªÇó×Ô¶¯µØ±ê¼Ç³öCACHEµ±Öо¸Ä±äµÄ¼Ç¼¡£Ê¹ÓüǼ¼¯µÄʱºòÊÇDAO°Ñ±»¼ìË÷³öµÄ¼Ç¼¶ÁÈëCACHE£¬ËùÓеIJÙ×ݶ¼ÊÇÕë¶ÔCACHEÖеļǼ½øÐеģ¬ÒªÊµÏÖ¶ÔÊý¾Ý¿âµ±ÖеļǼ¸üбØÐë°ÑCACHE¼Ç¼Öб»¸Ä±äµÄ×ֶεÄֵд»Øµ½Êý¾Ý¿âÎļþµ±ÖÐÈ¥¡£Õâ¸ö±ê־λµÄ×÷ÓþÍÊǵ±CACHEÖеÄÊý¾Ý¸Ä±äµÄʱºò£¬ÊÇ·ñÐèÒª×Ô¶¯µÄ±ê¼Ç³ö¼Ç¼ÖÐÄÇЩӦ¸Ã±»Ð´»ØµÄ×ֶΡ£
ÏÂÃæ½éÉÜÈçºÎÌî¼ÓÒ»¸ö¼Ç¼¡£
¡¡
m_Recordset _>AddNew();
m_Recordset_>Update();
ʹÓÃAddNew()Õâ¸öº¯Êý¿ÉÒÔÔÚÊý¾Ý±í¼Ç¼¼¯»òÕßÊǶ¯Ì¬¼Ç¼¼¯µ±ÖÐÌí¼ÓеļǼ£¬µ÷ÓÃAddNew()Ö®ºó±ØÐë½Ó×ŵ÷ÓÃUpdate()À´È·ÈÏÕâ¸öÌí¼Ó¶¯×÷£¬½«ÐµļǼ±£´æµ½Êý¾Ý¿âÎļþµ±ÖÐÈ¥¡£ÐµļǼÔÚÊý¾Ý¿âµ±ÖеÄλÖÃÈ¡¾öÓÚµ±Ç°¼Ç¼¼¯µÄÀàÐÍ£ºÈç¹ûÊǶ¯Ì¬¼Ç¼¼¯£¬Ð¼Ç¼¶¼½«±»²åÈëµ½¼Ç¼¼¯µÄĩβ¡£Èç¹ûÊÇÊý¾Ý±í¼Ç¼¼¯µÄ»°£¬µ±Êý¾Ý¿â±íÖж¨ÒåÁËÖ÷¼üµÄʱºòмǼ½«°´ÕÕ¿â±íµÄÅÅÐò¹æÔò²åÈëµ½ºÏÊʵĵط½£»Èç¹ûûÓж¨ÒåÖ÷¼üÄÇôмǼҲ»á±»²åÈëµ½¼Ç¼¼¯µÄĩβ¡£
ÓÃAddNew()»á¸Ä±ä¼Ç¼¼¯µÄµ±Ç°¼Ç¼¡£Ö»Óн«µ±Ç°¼Ç¼¶¨Î»ÔÚмǼÉÏ£¬²ÅÄÜÌîдËüµÄÊý¾Ý¡£ËùÒÔÎÒÃÇʹÓÃMoveLastº¯Êýʹ¸Õ¸ÕÌí¼ÓµÄ¼Ç¼³ÉΪµ±Ç°¼Ç¼£¬È»ºóµ÷ÓÃEditº¯Êý¶ÔмǼ½øÐб༡£
m_Recordset_>MoveLast();
m_Recordset_>Edit();
ÒÀ´Î¸øÐ¼Ç¼µÄ×ֶνøÐи³Öµ£º
COleVariant var1(m_Name , VT_BSTRT);
m_Recordset_>SetFieldValue(_T("studentName") , var1);
COleVariant var2(m_ID , VT_BSTRT);
m_Recordset_>SetFieldValue(_T("studentID") , var2);
COleVariant var3(m_Class , VT_BSTRT);
m_Recordset_>SetFieldValue(_T("studentClass") , var3);
COleVariant var4(m_SID , VT_BSTRT);
m_Recordset_>SetFieldValue(_T("studentSID") , var4);
COleVariant Õâ¸öÀà·â×°ÁËWIN32ÌṩµÄVARIANTÕâ¸ö½á¹¹ÒÔ¼°¶ÔËüµÄ²Ù×÷¡£Õâ¸öÀ൱ÖпÉÒÔ´æ´¢¶àÖÖÀàÐ͵ÄÊý¾Ý¡£ÐèҪעÒâµÄÊÇÕâÖÖ°üÈÝÄÜÁ¦ÊÇͨ¹ýCÓïÑÔµ±ÖеÄUNIONÌṩµÄ£¬¾ÍÊÇ˵һ¸öCOleVariant ¶ÔÏóÖ»Äܱ£´æÒ»ÖÖÀàÐ͵ÄÊý¾Ý¡£ÎÒÃÇÏȰÑ×ֶεÄÖµ×°ÈëOLE±äÌå¶ÔÏó£¬ÔÙʹÓÃÕâ¸ö±äÌå¶ÔÏó¶Ô¼Ç¼ÖеÄ×ֶνøÐи³Öµ¡£VT_BSTRT²ÎÊýµÄ×÷ÓÃÊÇÔÚÉú³ÉOLE±äÌå¶ÔÏóµÄʱºòָʾ½«Òª·âÈëµÄÊý¾ÝµÄÀàÐÍΪ×Ö·û´®¡£µ±¶ÔËùÓеÄ×ֶζ¼½áÊø¸³Öµºó£¬µ÷ÓÃUpdate º¯ÊýÀ´±£´æ¸Õ²ÅµÄÐ޸ġ£
m_Recordset_>Update();
×¢Ò⣬ÔÚµ÷ÓÃUpdateº¯Êý֮ǰ,Èç¹û½øÐÐÁ˸ı䵱ǰ¼Ç¼µÄ²Ù×÷,ÄÇÃ´Ç°Ãæ½øÐеÄËùÓеĸ³Öµ¹¤×÷¶¼½«¶ªÊ§£¬¶øÇÒ²»»á¸ø³öÈκεľ¯¸æ¡£
Õâ¶Î´úÂë´Ó¼Ç¼¼¯ÖÐÈ¡³öÒ»¸ö¼Ç¼µÄÖµ,ÕâÀïͬÑùÒªÓõ½OLE±äÌå¶ÔÏ󡣼Ǽ¼¯µÄGetFieldValue½«·µ»ØÒ»¸ö±äÌå¶ÔÏó£¬ÎÒÃÇÊ×ÏÈÈ¡µÃÕâ¸ö±äÌå¶ÔÏó£¬È»ºó´ÓÖÐÈ¡³öÐèÒªµÄÖµ¡£
ÕâÀïV_BSTRTָʾ´Ó±äÌå¶ÔÏóµ±ÖÐÈ¡³ö×Ö·û´®ÀàÐ͵ÄÊý¾Ý¡£
ÈçºÎ´ÓÊý¾Ý¿âÖÐɾȥһ¸ö¼ÇÂ¼ÄØ£¿Ê×ÏÈҪʹ¸Ã¼Ç¼³ÉΪµ±Ç°¼Ç¼¡£È»ºóʹÓÃDeleteº¯ÊýÀ´Ö´ÐÐɾ³ý²Ù×÷¡£
m_Recordset_>Delete();
ɾ³ýÖ®ºó£¬ÎÒÃDZØÐë°Ñµ±Ç°¼Ç¼¸ü¸ÄΪÆäËûµÄ¼Ç¼£¬ÒÔÈ·ÈÏÕâ¸öɾ³ý¶¯×÷¡£
ÒÔÉϾÍÊÇÔÚMFCÖÐʹÓÃDAO½øÐÐÊý¾Ý¿â²Ù×÷µÄ·½·¨¡£
Á˽âÁËÇ°ÃæµÄÄÚÈÝ£¬ÏàÐÅÄú¶ÔMFCÀà¿âÒѾÓÐÁ˱ȽÏÉîÈëµÄÈÏʶ£¬¿ÉÒÔʹÓÃMFC±àд³ö²»´íµÄ³ÌÐòÁË¡£ÏÂÃæ£¬ÎÒÃǽ«ÏòÄú½éÉÜÈçºÎÔÚVISUAL C++¼¯³É¿ª·¢»·¾³Ö®Ïµ÷ÊÔ×Ô¼ºµÄ³ÌÐò¡£
Öлª¼¼ÊõÍøÕûÀí·¢²¼
http://www.asfocus.com
Ò»¸ö¹¦ÄÜÇ¿´óµÄÓÃADO·ÃÎÊÊý¾Ý¿âµÄÀà
ADO ·ÃÎÊÊý¾Ý¿âÊÇ»ùÓÚCOM ,·ÃÎÊËٶȿ졢ʹÓ÷½±ãµÈÌØµã¡£ÎÒÔÚʵ¼ÊµÄ¹¤×÷µ±Öз¢ÏÖ¿ÉÒÔ°ÑһЩ³£Óõķ½·¨¹¹Ôì³ÉÒ»¸öÀ࣬²»·Á½ÐËýΪ CAdoEx Àà°É¡£ÏÂÃæ·Ö±ðÊÇÍ·Îļþ¡¢ÊµÏÖÎļþ¡£ÒªÊÇÓв»Í×Ö®´¦Çë¸øÎÒ·¢Óʼþ luoshizhen@163.net
*˵Ã÷:--------------------------------------------*/
/* ×¢ stdafx.h ÀïÒªÓÐÏÂÃæÁ½ÐÐ */
/* #include <comdef.h> */
/* #import "c:\program files\common files\system\ado\msado15.dll"
no_namespace rename("EOF","adoEOF") */
/* AfxOleInit() ; ADO ³õʼÔÚÓ¦ÓõÄÖ÷Ï̳߳õʼ»¯Ê±µ÷Óà */
/*˵Ã÷:--------------------------------------------*/
/* ÒÔÏÂÊÇÀàµÄ³ÉԱ˵Ã÷ */
#ifndef _ADOEX_H_
#define _ADOEX_H_
#include "stdafx.h"
class CAdoEx
{
public:
CAdoEx();
virtual ~CAdoEx();
/*´ò¿ª Ado Êý¾Ý¿â*/
BOOL OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD);
file://--------------------------------------------//
/* ADO ͨÓòéѯº¯Êý */
/* µ÷ÓòÎÊý: