vc sql server odbc如何动态创建一个数据源!!!
实现条件:
1〉不使用控制面板,
2〉而后又能使数据源直接连到pubs库上,
3〉使用系统身份验证。
以上这些能够自动完成!!清高首赐教!!!

解决方案 »

  1.   

    写注册表动态创建SQL Server ODBC数据源各个参数的意义:
    DBServer: 数据库所在主机
    DBName:  数据库名称
    DSN:   数据源名称
    UID:   登陆用户
    返回值:
    -1: 没有安装SQL Server驱动程序
    -2: 其他错误
    0: 成功实现函数:
    int MakeSQLServerODBCDSN(LPCTSTR DBServer,LPCTSTR DBName,LPCTSTR DSN,LPCTSTR UID)
    {
     BOOL  bInstallDriver=TRUE;
     CRegKey  regKey; LONG lRet=regKey.Open(HKEY_LOCAL_MACHINE,"Software\\ODBC\\ODBCINST.INI\\SQL Server");
     if(lRet!=ERROR_SUCCESS)
     {
      bInstallDriver=FALSE;
     }
     else
     {
      char  szDirverPath[MAX_PATH]="";
      DWORD  dwCount=100;
      lRet=regKey.QueryValue(szDirverPath,"Driver",&dwCount);
      if((lRet!=ERROR_SUCCESS)||(dwCount<1))
      {
       DWORD dwErr=GetLastError();
       bInstallDriver=FALSE;
      }
      regKey.Close();
     }
     if(!bInstallDriver)
     {
      return -1;
     }
     CString  strKeyValueName="Software\\ODBC\\ODBC.INI\\";
     strKeyValueName+=DSN;
     lRet=regKey.Create(HKEY_LOCAL_MACHINE,strKeyValueName);
     if(lRet!=ERROR_SUCCESS)
     {
      return -2;
     }
     regKey.SetValue(DBName,"Database");
     regKey.SetValue("SQLSrv32.dll","Driver");
     regKey.SetValue(DBServer,"Server");
     regKey.SetValue(UID,"LastUser");
     regKey.m_hKey=HKEY_LOCAL_MACHINE;
     regKey.SetKeyValue("Software\\ODBC\\ODBC.INI\\ODBC Data Sources","SQL Server",DSN);
     regKey.Close();
     return 0;
    }
      

  2.   

    to:bohut(伯虎) 
    我是想实现:
    怎样才能使动态配置的数据源能够默认选择“使用网络登陆ID的WINDOWS NT验证被选中”?
    我写的部分代码:  
    if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server",_T("DNS=myDNS\0SERVER=TEXT\0DATABASE=pubs\0"));我是由控制面板打开DNS时,默认的选择“使用用户登陆的ID和密码的SQL SERVER身份验证”,我怎样才能使动态配置的数据源能够默认选择“使用网络登陆ID的WINDOWS NT验证被选中”呢?
      

  3.   

    to:bohut(伯虎) 
    我是想实现:
    怎样才能使动态配置的数据源能够默认选择“使用网络登陆ID的WINDOWS NT验证被选中”?
    我写的部分代码:  
    if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server",_T("DNS=myDNS\0SERVER=TEXT\0DATABASE=pubs\0"));我是由控制面板打开DNS时,默认的选择“使用用户登陆的ID和密码的SQL SERVER身份验证”,我怎样才能使动态配置的数据源能够默认选择“使用网络登陆ID的WINDOWS NT验证被选中”呢?
      

  4.   

    http://www.vckbase.com/document/finddoc.asp?mclsid=&sclsid=&page=1&keyword=odbc
      

  5.   

    参考
    http://www.vckbase.com/document/viewdoc/?id=249