MFC-ODBC自動註冊數據源

自動註冊ODBC數據源,如下代碼可直接放在對話框初始化函數OnInitDialog中:

       /*獲取應用程序exe所在路徑*/

CString szPath; 
GetModuleFileName(NULL,szPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH); 
szPath.ReleaseBuffer (); 

int nPos; 
nPos=szPath.ReverseFind ('\\'); 
szPath=szPath.Left (nPos); 
CString szFile = szPath + "\\odbc.accdb"; 

char szAtr[256]; 
        //如下代碼不能替換爲sprintf(szAtr,"DSN=%s\0DBQ=%s\0DEFAULTDIR=%s\0\0","ODBC_TEST", szFile,szPath); 
        //原因:sprintf僅能拷貝處理後的字符串,遇到‘\0'後結束。導致僅能將szAtr設置爲“DSN=%s\0”,這樣導致註冊數據源的屬性不全。
sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!!","ODBC_TEST", szFile,szPath); 

int nlen; 
nlen = strlen(szAtr); 
for (int i=0; i<nlen; i++) 
{
if (szAtr [i] == '!') 
szAtr [i] = '\0'; 


/*自動註冊ODBC數據源*/
if (FALSE == SQLConfigDataSource(NULL, ODBC_ADD_DSN, 
"Microsoft Access Driver (*.mdb, *.accdb)\0", 
(LPCSTR)szAtr)) 
{
AfxMessageBox("SQLConfigDataSource Failed"); 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章