www.pudn.com > odbc_class.rar > DEMO1.CPP
// demo1.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "demo1.h" #include "demo1Dlg.h" #include#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDemo1App BEGIN_MESSAGE_MAP(CDemo1App, CWinApp) //{{AFX_MSG_MAP(CDemo1App) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDemo1App construction CDemo1App::CDemo1App() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CDemo1App object CDemo1App theApp; ///////////////////////////////////////////////////////////////////////////// // CDemo1App initialization BOOL CDemo1App::InitInstance() { this->GetExePath(); this->SetODBCSource(); AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif CDemo1Dlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } //得到执行路径 void CDemo1App::GetExePath() { char path[MAX_PATH] = {'\0'}; GetModuleFileName(NULL,path,MAX_PATH); m_strExePath.Format("%s", path); int iPosition; iPosition = m_strExePath.ReverseFind('\\'); m_strExePath = m_strExePath.Left(iPosition + 1); } //增加odbc数据源 void CDemo1App::SetODBCSource() { CString strAccessPath = m_strExePath + "employers.mdb"; int iLen = strAccessPath.GetLength(); char cpConfig[MAX_PATH]; strcpy(cpConfig, "DSN=daliu\0"); strcpy(cpConfig + 10, "DBQ="); strcpy(cpConfig + 14, strAccessPath); strcpy(cpConfig + 14 + iLen, "\0"); strcpy(cpConfig + 15 + iLen, "DEFAULTDIR="); strcpy(cpConfig + 15 + iLen + 11, m_strExePath); strcpy(cpConfig + 25 + iLen + m_strExePath.GetLength(), "\0\0"); if(!SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)\0",cpConfig)) { //AfxMessageBox("add odbc source failed!"); } }