当前位置: 代码迷 >> VC/MFC >> 为什么VC使用ODBC打开access数据库总是弹出选择数据源提示框
  详细解决方案

为什么VC使用ODBC打开access数据库总是弹出选择数据源提示框

热度:130   发布时间:2016-05-02 03:40:27.0
为什么VC使用ODBC打开access数据库老是弹出选择数据源提示框
我是 用vs2005 在MFC下 使用odbc打开access数据库时 老是弹出选择数据源提示框。
打开时的代码如下:
  



CString lpszFile = sPath + _T("\\AlarmDisc.mdb");

    char* szDesc;
    int mlen;
    szDesc=new char[256];
    sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","AlarmDisc",lpszFile,sPath);

    mlen = strlen(szDesc);
    for (int i=0; i<mlen; i++)
    {
        if (szDesc[i] == '?')
            szDesc[i] = '\0';
    }

    WCHAR wszClassName[256];  
    memset(wszClassName,0,sizeof(wszClassName));  
    MultiByteToWideChar(CP_ACP,0,szDesc,strlen(szDesc)+1,wszClassName,sizeof(wszClassName)/sizeof(wszClassName[0])); 
    if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,_T("Microsoft Access Driver (*.mdb)\0"),_T("DSN=AlarmDisc"))) //    (LPCWSTR)wszClassName
        AfxMessageBox(_T("SQLConfigDataSource Failed"));


    try
    {
        CString strConnect;
        strConnect.Format(_T("DSN=AlarmDisc;"));
        if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib))
        {
            AfxMessageBox(_T("Unable to Connect to the Specified Data Source"));
            return FALSE ;
        }
    }
    catch(CDBException *pE)
    {
        pE->ReportError();
        pE->Delete();
        return FALSE;
    }


每次在执行 if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib)) 时就会弹出 选择数据源的提示框


各位大神 谁帮我解决一下

------解决思路----------------------
OpenEx的第二个参数改成这样试试CDatabase::useCursorLib 
------解决思路----------------------
 CDatabase::noOdbcDialog
------解决思路----------------------
使用odbcad32.exe设置系统DSN

    在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
    在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe

------解决思路----------------------
你使用的连接串不正确

------解决思路----------------------
string里加上   ;Trusted_Connection=Yes试试
  相关解决方案