ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Visual C++ ÖеÄODBC±à³Ì
2012-11-03 14:45:51 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:278´Î
Tags£ºVisual ODBC ±à³Ì
ºODBC£¨Open Database Connectivity£¬¿ª·ÅʽÊý¾Ý¿âÁ¬½Ó£©£¬ÊÇÒ»ÖÖÓÃÀ´ÔÚÏà¹Ø»ò²»Ïà¹ØµÄÊý¾Ý¿â¹ÜÀíϵͳ£¨DBMS£©ÖдæÈ¡Êý¾ÝµÄ±ê×¼Ó¦ÓóÌÐò½Ó¿Ú£¨API£©¡£±¾Îĸø³öWindows 95 »·¾³ÏÂÓÃVisual C++(www.cppentry.com) ½øÐÐODBC ±à³Ì(www.cppentry.com)µÄ¾ßÌå·½·¨¼°¼¼ÇÉ¡£

---- ¹Ø¼ü×Ö£ºODBC£¬Visual C++(www.cppentry.com)£¬Windows ±à³Ì(www.cppentry.com)¡£

---- Ò»£®¸ÅÊö

---- ODBC ÊÇÒ»ÖÖʹÓÃSQL µÄ³ÌÐòÉè¼Æ½Ó¿Ú¡£Ê¹ÓÃODBC ÈÃÓ¦ÓóÌÐòµÄ±àдÕß±ÜÃâÁËÓëÊý¾ÝÔ´ÏàÁªµÄ¸´ÔÓÐÔ¡£ÕâÏî¼¼ÊõĿǰÒѾ­µÃµ½ÁË´ó¶àÊýDBMS ³§ÉÌÃǵĹ㷺֧³Ö¡£

---- Microsoft Developer Studio Ϊ´ó¶àÊý±ê×¼µÄÊý¾Ý¿â¸ñʽÌṩÁË32 λODBC Çý¶¯Æ÷¡£ÕâЩ±ê×¼Êý¾Ý¸ñʽ°üÀ¨ÓУºSQL Server¡¢Access¡¢Paradox¡¢dBase¡¢FoxPro¡¢Excel¡¢Oracle ÒÔ¼°Microsoft Text¡£Èç¹ûÓû§Ï£ÍûʹÓÃÆäËûÊý¾Ý¸ñʽ£¬Óû§ÐèÒªÏàÓ¦µÄODBC Çý¶¯Æ÷¼°DBMS¡£

---- Óû§Ê¹ÓÃ×Ô¼ºµÄDBMS Êý¾Ý¿â¹ÜÀí¹¦ÄÜÉú³ÉеÄÊý¾Ý¿âģʽºó£¬¾Í¿ÉÒÔʹÓÃODBC À´µÇ¼Êý¾ÝÔ´¡£¶ÔÓû§µÄÓ¦ÓóÌÐòÀ´Ëµ£¬Ö»Òª°²×°ÓÐÇý¶¯³ÌÐò£¬¾ÍÄÜ×¢²áºÜ¶à²»Í¬µÄÊý¾Ý¿â¡£µÇ¼Êý¾Ý¿âµÄ¾ßÌå²Ù×÷²Î¼ûÓйØODBC µÄÁª»ú°ïÖú¡£

---- ¶þ£®MFC ÌṩµÄODBC Êý¾Ý¿âÀà

---- Visual C++(www.cppentry.com) µÄMFC »ùÀà¿â¶¨ÒåÁ˼¸¸öÊý¾Ý¿âÀà¡£ÔÚÀûÓÃODBC ±à³Ì(www.cppentry.com)ʱ£¬¾­³£ÒªÊ¹Óõ½CDatabase( Êý¾Ý¿âÀà)£¬CRecordSet( ¼Ç¼¼¯Àà) ºÍCRecordView( ¿ÉÊӼǼ¼¯Àà)¡£ÆäÖУº

---- CDatabase Àà¶ÔÏóÌṩÁ˶ÔÊý¾ÝÔ´µÄÁ¬½Ó£¬Í¨¹ýËüÄã¿ÉÒÔ¶ÔÊý¾ÝÔ´½øÐвÙ×÷¡£

---- CRecordSet Àà¶ÔÏóÌṩÁË´ÓÊý¾ÝÔ´ÖÐÌáÈ¡³öµÄ¼Ç¼¼¯¡£CRecordSet ¶ÔÏóͨ³£ÓÃÓÚÁ½ÖÖÐÎʽ£º¶¯Ì¬Ðм¯£¨dynasets£©ºÍ¿ìÕÕ¼¯£¨snapshots£©¡£¶¯Ì¬Ðм¯Äܱ£³ÖÓëÆäËûÓû§Ëù×öµÄ¸ü¸Ä±£³Öͬ²½¡£¿ìÕÕ¼¯ÔòÊÇÊý¾ÝµÄÒ»¸ö¾²Ì¬ÊÓͼ¡£Ã¿Ò»ÖÖÐÎʽÔڼǼ¼¯±»´ò¿ªÊ±¶¼Ìṩһ×é¼Ç¼£¬Ëù²»Í¬µÄÊÇ£¬µ±ÄãÔÚÒ»¸ö¶¯Ì¬Ðм¯Àï¹ö¶¯µ½Ò»Ìõ¼Ç¼ʱ£¬ÓÉÆäËûÓû§»òÊÇÄãÓ¦ÓóÌÐòÖÐµÄÆäËû¼Ç¼¼¯¶Ô¸Ã¼Ç¼Ëù×öµÄ¸ü¸Ä»áÏàÓ¦µØÏÔʾ³öÀ´¡£

---- CRecordView Àà¶ÔÏóÄÜÒÔ¿ØÖƵÄÐÎʽÏÔʾÊý¾Ý¿â¼Ç¼¡£Õâ¸öÊÓͼÊÇÖ±½ÓÁ¬µ½Ò»¸öCRecordSet ¶ÔÏóµÄ±íÊÓͼ¡£

---- Èý£®Ó¦ÓÃODBC ±à³Ì(www.cppentry.com)

---- Ó¦ÓÃVisual C++(www.cppentry.com) µÄAppWizard ¿ÉÒÔ×Ô¶¯Éú³ÉÒ»¸öODBC Ó¦ÓóÌÐò¿ò¼Ü¡£·½·¨ÊÇ£º´ò¿ªFile ²Ëµ¥µÄNew Ñ¡ÏѡȡProjects£¬ÌîÈ빤³ÌÃû£¬Ñ¡ÔñMFC AppWizard (exe)£¬È»ºó°´AppWizard µÄÌáʾ½øÐвÙ×÷¡£µ±AppWizard ѯÎÊÊÇ·ñ°üº¬Êý¾Ý¿âÖ§³Öʱ£¬Èç¹ûÄãÏë¶ÁдÊý¾Ý¿â£¬ÄÇôѡ¶¨Database view with file support£»¶ø ãÏë·ÃÎÊÊ Ý¿âµÄÐÅÏ¢¶ »Ïë»ØÐ´Ë öµÄ¸Ä±ä£ Çôѡ¶¨Database view without file support Ñ¡Ïî¾Í±È½ÏºÏÊÊÁË¡£Ñ¡ÔñÁËÊý¾Ý¿âÖ§³ÖÖ®ºóDatabase Source °´Å¥»á¼¤»î£¬Ñ¡ÖÐËüÈ¥µ÷ÓÃData Options ¶Ô»°¿ò¡£ÔÚDatabase Options ¶Ô»°¿òÖлáÏÔʾÒÑÏòODBC ×¢²áµÄÊý¾Ý¿â×ÊÔ´£¬Ñ¡¶¨ÄãËùÒª²Ù×÷µÄÊý¾Ý¿â£¬È磺Super_ES£¬µ¥»÷OK ºó»á³öÏÖSelect Database Tables ¶Ô»°¿ò£¬ÆäÖÐÁоÙÁËÄãËùÑ¡ÖеÄÊý¾Ý¿âÖаüº¬µÄÈ«²¿±í£¬Ñ¡ÔñÄãÏ£Íû²Ù×÷µÄ±íºó£¬µ¥»÷OK¡£ÔÚÑ¡¶¨ÁËÊý¾Ý¿âºÍÊý¾Ý±íÖ®ºó£¬Äã¿ÉÒÔ°´ÕÕ¹ßÀý¼ÌÐø½øÐÐAppWizard ²Ù×÷¡£

---- ÌØ±ðÐèÒªÖ¸³öµÄÊÇ£ºÔÚÉú³ÉµÄÓ¦ÓóÌÐò¿ò¼ÜView ÀࣨÈ磺CSuper_ESView£©Öаüº¬Ò»¸öÖ¸ÏòCSuper_ESSet ¶ÔÏóµÄÖ¸Õëm_pSet£¬¸ÃÖ¸ÕëÓÉAppWizard ½¨Á¢£¬Ä¿µÄÊÇÔÚÊÓ±íµ¥ºÍ¼Ç¼¼¯Ö®¼ä½¨Á¢ÁªÏµ£¬Ê¹µÃ¼Ç¼¼¯ÖеIJéѯ½á¹ûÄܹ»ºÜÈÝÒ×µØÔÚÊÓ±íµ¥ÉÏÏÔʾ³öÀ´¡£ÓйØm_pSet µÄÏêϸÓ÷¨¿ÉÒԲμûVisual C++(www.cppentry.com) Online Book¡£

---- ³ÌÐòÓëÊý¾ÝÓïÑÔ½¨Á¢ÁªÏµ£¬Ê¹ÓÃCDatebase::OpenEx() »òCDatabase::Open() º¯ÊýÀ´½øÐгõʼ»¯¡£Êý¾Ý¿â¶ÔÏó±ØÐëÔÚÄãʹÓÃËü¹¹ÔìÒ»¸ö¼Ç¼¼¯¶ÔÏó֮ǰ±»³õʼ»¯¡£

---- ÏÂÃæ¾ÙÀý˵Ã÷ÔÚVisual C++(www.cppentry.com) »·¾³ÖÐODBC µÄ±à³Ì(www.cppentry.com)¼¼ÇÉ£º

---- 1 £®²éѯ¼Ç¼

---- ²éѯ¼Ç¼ʹÓÃCRecordSet::Open() ºÍCRecordSet::Requery() ³ÉÔ±º¯Êý¡£ÔÚʹÓÃCRecordSet Àà¶ÔÏó֮ǰ£¬±ØÐëʹÓÃCRecordSet::Open() º¯ÊýÀ´»ñµÃÓÐЧµÄ¼Ç¼¼¯¡£Ò»µ©ÒѾ­Ê¹ÓùýCRecordSet::Open() º¯Êý£¬Ôٴβéѯʱ¾Í¿ÉÒÔÓ¦ÓÃCRecordSet::Requery() º¯Êý¡£ÔÚµ÷ÓÃCRecordSet::Open() º¯Êýʱ£¬Èç¹ûÒѾ­½«Ò»¸öÒѾ­´ò¿ªµÄCDatabase ¶ÔÏóÖ¸Õë´«¸øCRecordSet Àà¶ÔÏóµÄm_pDatabase ³ÉÔ±±äÁ¿£¬ÔòʹÓøÃÊý¾Ý¿â¶ÔÏó½¨Á¢ODBC Á¬½Ó£»·ñÔòÈç¹ûm_pDatabase Ϊ¿ÕÖ¸Õ룬¾Íн¨Ò»¸öCDatabase Àà¶ÔÏó²¢Ê¹ÆäÓëȱʡµÄÊý¾ÝÔ´ÏàÁ¬£¬È»ºó½øÐÐCRecordSet Àà¶ÔÏóµÄ³õʼ»¯¡£È±Ê¡Êý¾ÝÔ´ÓÉGetDefaultConnect() º¯Êý»ñµÃ¡£ÄãÒ²¿ÉÒÔÌṩÄãËùÐèÒªµÄSQL Óï¾ä£¬²¢ÒÔËüÀ´µ÷ÓÃCRecordSet::Open() º¯Êý£¬ÀýÈ磺

Super_ESSet.Open(AFX_DATABASE_USE_DEFAULT,strSQL);
---- Èç¹ûûÓÐÖ¸¶¨²ÎÊý£¬³ÌÐòÔòʹÓÃȱʡµÄSQL Óï¾ä£¬¼´¶ÔÔÚGetDefaultSQL() º¯ÊýÖÐÖ¸¶¨µÄSQL Óï¾ä½øÐвÙ×÷£º

CString CSuper_ESSet::GetDefaultSQL()
{return _T("[BasicData],[MainSize]");}
---- ¶ÔÓÚGetDefaultSQL() º¯Êý·µ»ØµÄ±íÃû£¬¶ÔÓ¦µÄȱʡ²Ù×÷ÊÇSELECT Óï¾ä£¬¼´£º

SELECT * FROM BasicData,MainSize
---- ²éѯ¹ý³ÌÖÐÒ²¿ÉÒÔÀûÓÃCRecordSet µÄ³ÉÔ±±äÁ¿m_strFilter ºÍm_strSort À´Ö´ÐÐÌõ¼þ²éѯºÍ½á¹ûÅÅÐò¡£m_strFilter Ϊ¹ýÂË×Ö·û´®£¬´æ·Å×ÅSQL Óï¾äÖÐWHERE ºóµÄÌõ¼þ´®£»m_strSort ΪÅÅÐò×Ö·û´®£¬´æ·Å×ÅSQL Óï¾äÖÐORDER BY ºóµÄ×Ö·û´®¡£È磺

Super_ESSet.m_strFilter="TYPE=µç¶¯»ú";
Super_ESSet.m_strSort="VOLTAGE";
Super_ESSet.Requery();
¶ÔÓ¦µÄSQLÓï¾äΪ£º
SELECT * FROM BasicData,MainSize
WHERE TYPE=µç¶¯»ú
ORDER BY VOLTAGE
---- ³ýÁËÖ±½Ó¸³Öµ¸øm_strFilter ÒÔÍ⣬»¹¿ÉÒÔʹÓòÎÊý»¯¡£ÀûÓòÎÊý»¯¿ÉÒÔ¸üÖ±¹Û£¬¸ü·½±ãµØÍê³ÉÌõ¼þ²éѯÈÎÎñ¡£Ê¹ÓòÎÊý»¯µÄ²½ÖèÈçÏ£º

---- (1) £®ÉùÃ÷²Î±äÁ¿£º

CString p1;
float p2;
---- (2) £®ÔÚ¹¹Ô캯ÊýÖгõʼ»¯²Î±äÁ¿

p1=_T("");
p2=0.0f;
m_nParams=2;
---- (3) £®½«²Î±äÁ¿Óë¶ÔÓ¦Áаó¶¨

pFX- >SetFieldType(CFieldExchange::param)
RFX_Text(pFX,_T("P1"),p1);
RFX_Single(pFX,_T("P2"),p2);
---- Íê³ÉÒÔÉϲ½ÖèÖ®ºó¾Í¿ÉÒÔÀûÓòαäÁ¿½øÐÐÌõ¼þ²éѯÁË£º

m_pSet- >m_strFilter="TYPE= AND VOLTAGE= ";
m_pSet- >p1=" µç¶¯»ú";
m_pSet- >p2=60.0;
m_pSet- >Requery();
---- ²Î±äÁ¿µÄÖµ°´°ó¶¨µÄ˳ÐòÌæ»»²éѯ×Ö´®ÖеÄ" " ÊÊÅä·û¡£

---- Èç¹û²éѯµÄ½á¹ûÊǶàÌõ¼Ç¼µÄ»°£¬¿ÉÒÔÓÃCRecordSet ÀàµÄº¯ÊýMove()£¬MoveNext()£¬MovePrev()£¬MoveFirst() ºÍMoveLast() À´Òƶ¯¹â±ê¡£

---- 2 £®Ôö¼Ó¼Ç¼

---- Ôö¼Ó¼Ç¼ʹÓÃAddNew() º¯Êý£¬ÒªÇóÊý¾Ý¿â±ØÐëÊÇÒÔÔÊÐíÔö¼ÓµÄ·½Ê½´ò¿ª£º

m_pSet- >AddNew(); //ÔÚ±íµÄĩβÔö¼ÓмǼ
m_pSet- >SetFieldNull(&(m_pSet- >m_type), FALSE);
m_pSet- >m_type=" µç¶¯»ú";
... //ÊäÈëеÄ×Ö¶ÎÖµ
m_pSet- > Update(); //½«Ð¼Ç¼´æÈëÊý¾Ý¿â
m_pSet- >Requery(); //ÖØ½¨¼Ç¼¼¯
---- 3 £®É¾³ý¼Ç¼

---- Ö±½ÓʹÓÃDelete() º¯Êý£¬²¢ÇÒÔÚµ÷ÓÃDelete() º¯ÊýÖ®ºó²»Ðèµ÷ÓÃUpdate() º¯Êý£º

m_pSet- >Delete();
if (!m_pSet- >IsEOF())
m_pSet- >MoveNext();
else
m_pSet- >MoveLast();
---- 4 £®Ð޸ļǼ

---- Ð޸ļǼʹÓÃEdit() º¯Êý£º

m_pSet- >Edit(); //Ð޸ĵ±Ç°¼Ç¼
m_pSet- >m_type="·¢µç»ú";
//Ð޸ĵ±Ç°¼Ç¼×Ö¶ÎÖµ
...
m_pSet- >Update(); //½«Ð޸Ľá¹û´æÈëÊý¾Ý¿â
m_pSet- >Requery();
---- 5 £®³·Ïû²Ù×÷

---- Èç¹ûÓû§Ñ¡ÔñÁËÔö¼Ó»òÕßÐ޸ļǼºóÏ£Íû·ÅÆúµ±Ç°²Ù×÷£¬¿ÉÒÔÔÚµ÷ÓÃUpdate() º¯Êý֮ǰµ÷Óãº

CRecordSet::Move(AFX_MOVE_REFRESH);
---- À´³·ÏûÔö¼Ó»òÐÞ¸Äģʽ£¬²¢»Ö¸´ÔÚÔö¼Ó»òÐÞ¸Äģʽ֮ǰµÄµ±Ç°¼Ç¼¡£ÆäÖеIJÎÊýAFX_MOVE_REFRESH µÄֵΪÁã¡£

---- 6 £®Êý¾Ý¿âÁ¬½ÓµÄ¸´ÓÃ

---- ÔÚCRecordSet ÀàÖж¨ÒåÁËÒ»¸ö³ÉÔ±±äÁ¿m_pDatabase:

CDatabase* m_pDatabase;
---- ËüÊÇÖ¸Ïò¶ÔÏóÊý¾Ý¿âÀàµÄÖ¸Õë¡£Èç¹ûÔÚCRecordSet Àà¶ÔÏóµ÷ÓÃOpen() º¯Êý֮ǰ£¬½«Ò»¸öÒѾ­´ò¿ªµÄCDatabase Àà¶ÔÏóÖ¸Õë´«¸øm_pDatabase£¬¾ÍÄܹ²ÏíÏàͬµÄCDatabase Àà¶ÔÏó¡£È磺

CDatabase m_db;
CRecordSet m_set1,m_set2;
m_db.Open(_T("Super_ES"));//½¨Á¢ODBCÁ¬½Ó
m_set1.m_pDatabase=&m_db;
//m_set1¸´ÓÃm_db¶ÔÏó
m_set2.m_pDatabse=&m_db;
// m_set2¸´ÓÃm_db¶ÔÏó
---- 7 £®SQL Óï¾äµÄÖ±½ÓÖ´ÐÐ

---- ËäȻͨ¹ýCRecordSet À࣬ÎÒÃÇ¿ÉÒÔÍê³É´ó¶àÊýµÄ²éѯ²Ù×÷£¬¶øÇÒÔÚCRecordSet::Open() º¯ÊýÖÐÒ²¿ÉÒÔÌṩSQL Óï¾ä£¬µ«ÊÇÓеÄʱºòÎÒÃÇ»¹Ïë½øÐÐһЩÆäËû²Ù×÷£¬ÀýÈ罨Á¢ÐÂ±í£¬É¾³ý±í£¬½¨Á¢ÐµÄ×ֶεȵȣ¬Õâʱ¾ÍÐèҪʹÓõ½CDatabase ÀàµÄÖ±½ÓÖ´ÐÐSQL Óï¾äµÄ»úÖÆ¡£Í¨¹ýµ÷ÓÃCDatabase::ExecuteSQL() º¯ÊýÀ´Íê³ÉSQL Óï¾äµÄÖ±½ÓÖ´ÐУº

BOOL CDB::ExecuteSQLAndReportFailure(const CString& strSQL)
{
TRY
{
m_pdb- >ExecuteSQL(strSQL);//Ö±½ÓÖ´ÐÐSQLÓï¾ä
}
CATCH (CDBException,e)
{
CString strMsg;
strMsg.LoadString(IDS_EXECUTE_SQL_FAILED);
strMsg+=strSQL;
return FALSE;
}
END_CATCH
return TRUE;
}
---- Ó¦µ±Ö¸³öµÄÊÇ£¬ÓÉÓÚ²»Í¬DBMS ÌṩµÄÊý¾Ý²Ù×÷Óï¾ä²»¾¡Ïàͬ£¬Ö±½ÓÖ´ÐÐSQL Óï¾ä¿ÉÄÜ»áÆÆ»µÈí¼þµÄDBMS ÎÞ¹ØÐÔ£¬Òò´ËÔÚÓ¦ÓÃÖÐÓ¦µ±É÷ÓôËÀà²Ù×÷¡£

---- 8 £®¶¯Ì¬Á¬½Ó±í

---- ±íµÄ¶¯Ì¬Á¬½Ó¿ÉÒÔÀûÓÃÔÚµ÷ÓÃCRecordSet::Open() º¯Êýʱָ¶¨SQL Óï¾äÀ´ÊµÏÖ¡£Í¬Ò»¸ö¼Ç¼¼¯¶ÔÏóÖ»ÄÜ·ÃÎʾßÓÐÏàͬ½á¹¹µÄ±í£¬·ñÔò²éѯ½á¹û½«ÎÞ·¨Óë±äÁ¿Ïà¶ÔÓ¦¡£

void CDB::ChangeTable()
{
if (m_pSet- >IsOpen()) m_pSet- >Close();
switch (m_id)
{
case 0:
m_pSet- >Open(AFX_DB_USE_DEFAULT_TYPE,
"SELECT * FROM SLOT0"); //Á¬½Ó±íSLOT0
m_id=1;
break;
case 1:
m_pSet- >Open(AFX_DB_USE_DEFAULT_TYPE,
"SELECT * FROM SLOT1"); //Á¬½Ó±íSLOT1
m_id=0;
break;
}
}
---- 9 £®¶¯Ì¬Á¬½ÓÊý¾Ý¿â

---- ÓÉÓÚÓëÊý¾Ý¿âµÄÁ¬½ÓÊÇͨ¹ýCDatabase Àà¶ÔÏóÀ´ÊµÏֵģ¬ËùÒÔÎÒÃÇ¿ÉÒÔͨ¹ý¸³ÓëCRecordSet Àà¶ÔÏó²ÎÊým_pDatabase ÒÔÁ¬½Ó²»Í¬Êý¾Ý¿âµÄCDatabase ¶ÔÏóÖ¸Õ룬¾Í¿ÉÒÔ¶¯Ì¬Á¬½ÓÊý¾Ý¿â¡£

void CDB::ChangeConnect()
{
CDatabase* pdb=m_pSet- >m_pDatabase;
pdb- >Close();

switch (m_id)
{
case 0:
if (!pdb- >Open(_T("Super_ES")))
//Á¬½ÓÊý¾ÝÔ´Super_ES
{
AfxMessageBox("Êý¾ÝÔ´Super_ES´ò¿ªÊ§°Ü£¬"
"Çë¼ì²éÏàÓ¦µÄODBCÁ¬½Ó", MB_OK|MB_ICONWARNING);
exit(0);
}
m_id=1;
break;
case 1:
if (!pdb- >Open(_T("Motor")))
//Á¬½ÓÊý¾ÝÔ´Motor
{
AfxMessageBox("Êý¾ÝÔ´Motor´ò¿ªÊ§°Ü£¬"
"Çë¼ì²éÏàÓ¦µÄODBCÁ¬½Ó", MB_OK|MB_ICONWARNING);
exit(0);
}
m_id=0;
break;
}
}
---- ËÄ£®×ܽá

---- Visual C++(www.cppentry.com) ÖеÄODBC Àà¿â¿ÉÒÔ°ïÖú³ÌÐòÔ±Íê³É¾ø´ó¶àÊýµÄÊý¾Ý¿â²Ù×÷¡£ÀûÓÃODBC ¼¼ÊõʹµÃ³ÌÐòÔ±´Ó¾ßÌåµÄDBMS ÖнâÍѳöÀ´£¬´Ó¶ø¼«´óµÄ¼õÉÙÁËÈí¼þ¿ª·¢µÄ¹¤×÷Á¿£¬Ëõ¶Ì¿ª·¢ÖÜÆÚ£¬Ìá¸ßÁËЧÂʺÍÈí¼þµÄ¿É¿¿ÐÔ¡£±¾ÎÄ×ܽáµÄ±ÊÕß´ÓÊÂÈí¼þ¿ª·¢µÄһЩ¾­ÑéÐĵÃÏ£Íû¶Ô´ÓÊÂODBC ¿ª·¢µÄ¹¤×÷ÕßÓÐËù°ïÖú¡£

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º¼¸ÖÖVC++Êý¾Ý¿â¿ª·¢¼¼ÊõµÄ±È½Ï ÏÂһƪ£ºÓÃVisual C++¿ª·¢Êý¾Ý¿âÓ¦ÓóÌÐò

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: