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 {
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"); 
}

你可能感兴趣的:(项目)