我用SQLBrowseConnect获得了SQL Server下所有可用的Server的名称,但是我不知道如何获得该Server下所有的Database的名称,请问有相关的API可以完成这个功能吗?

解决方案 »

  1.   

    我原来的程序先用Driver={SQL Server}作为输入参数调用SQLBrowseConnect,获得连接字符串格式(包含Server列表)。我选择一个Server,比如
    Driver={SQL Server};Server=aaa;
    再次调用SQLBrowseConnect后返回的结构和上次是一样的,而且没有Database的信息,我想知道Database的连接属性是哪里得到的,就像ODBC数据源设置对话框里可以选默认数据库那样。
      

  2.   

    pConn.CreateInstance(__uuidof(Connection));
    pConn->Open(_bstr_t(strConn),"","",adConnectUnspecified);
    pCataSet=pConn->OpenSchema(adSchemaCatalogs);
    if(!pCataSet->BOF)
    pCataSet->MoveFirst();
    while (!pCataSet->adoEOF)
    {
    _bstr_t catalog_name=pCataSet->GetFields()->GetItem("CATALOG_NAME")->Value;
    pCataSet->MoveNext();
    }
    if(pCataSet->State==adStateOpen)
    pCataSet->Close();
      

  3.   

    strConn.Format("Provider=sqloledb;Data Source=%s;",strDatasource);
    strConn+="Integrated Security=SSPI;";
      

  4.   

    原来是Catalog,谢谢楼上,我去试一下,搞定就放分。
      

  5.   

    如果是sqlserver使用sql语句就可以了
    use master
    select [name] from [sysdatabases]