如何动态配置sql server的数据源。
我想在程序中动态的配置一个sql server 的DSN(db)
然后在程序中用CDatabase打开:
  m_db.Open(_T("db"),FALSE,FALSE,_T("ODBC;")
怎么实现啊?
我知道要配Access的DSN,是用
SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))

解决方案 »

  1.   

    方法1。在系统的目录下一个文件是保存odbc配置的,以文本的形式保存,你可以打开它,直接按它语法在末尾加。好像是odbc*.dll,你可以先配置一个 dsn,在用搜索文件,内容包含你配置的dsn,找到该文件。把它做成函数,以后可动态调用。
    方法2.可直接调用底层odbc Api(不是MFC Api,这个只能用在高层次)直接创建。(参照
    <<vc++ 高级技术-数据库篇>>)
    还有函数和odbc Api例子做好后,能否发给我,我没时间去弄
    [email protected]
      

  2.   

    CString sPath;
    GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
    sPath.ReleaseBuffer ();
    // AfxMessageBox(sPath);
    int nPos;
    nPos=sPath.ReverseFind ('\\');
    sPath=sPath.Left (nPos);
    nPos=sPath.ReverseFind('\\');
        sPath=sPath.Left (nPos);
    CString lpszFile = sPath + "\\Test.mdb";

       
    char* szDesc;
    int mlen;
    szDesc=new char[256];
    sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","lhwy",lpszFile,sPath);
    AfxMessageBox(szDesc);
    mlen = strlen(szDesc);
        for (int i=0; i<mlen; i++)
    {
    if (szDesc[i] == '?')
     szDesc[i] = '\0';
    }
    // CString szDesc = "DSN=lhwy";  if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPTSTR)szDesc))  AfxMessageBox("SQLConfigDataSource Failed");
    给你段以前我写的代码参考
      

  3.   

    我也想知道
    楼上的是ACCESS不是SQL SERVER
    连接字符不同
      

  4.   

    http://www.csdn.net/Develop/Read_Article.asp?Id=12716