做一个理财软件,要连接到数据库,希望在在最开始的时候进行初始化,注册一个数据库服务器,然后再连接到这个服务器并创建ODBC数据源。请问如何用VC编程实现注册一个sql server的服务器

解决方案 »

  1.   

    http://topic.csdn.net/u/20100429/11/a1a68cd2-d942-4f6b-b387-69a130ec5888.html
    用ADO,不需要注册,这里虽然是ACCESS的,换成SQL SERVER的连接字符串就可以了。
      

  2.   

    嗯,直接用ADO就行,以下为初始化并获取ADO数据库的连接对象,可以直接对数据库进行操作!
    InitInstance()
    {
    AfxEnableControlContainer();
    ::CoInitialize(NULL);
    if (!AfxOleInit())
    {//初始化COM环境
    return FALSE;
    } ConnectDatabase();
            ....
    }ConnectDatabase()
    {
    CString szConnection = _T("driver={SQL Server};Server=localhost;DATABASE=TerminalUser;UID=sa;PWD=rcmn") ;
    if(m_adoConnection.Open(szConnection))
    {
    return FALSE;
    }
    return TRUE;
    }BOOL CAdoConnection::Open(LPCTSTR lpszConnect, long lOptions)
    {
    HRESULT hr = S_OK;
    //ASSERT(m_pConnection != NULL);
    ASSERT(AfxIsValidString(lpszConnect));

    CString stConnection(lpszConnect); ASSERT(!stConnection.IsEmpty());
    if(stConnection.IsEmpty())
    {
    return FALSE;
    } m_strConnection = stConnection; if (IsOpen()) 
    Close(); try
    {
    // 连接数据库
    if(m_pConnection == NULL){
    m_pConnection.CreateInstance(__uuidof(ADOCG::Connection));
    } if(m_nConnectionTimeout != 0)
    m_pConnection->PutConnectionTimeout(m_nConnectionTimeout); hr = m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnection)),"","",lOptions);
    }
    catch (_com_error e)
    {
    GetError(e,TEXT("CAdoConnection::Open"));
    _bstr_t Description(e.Description());
    m_strLastError = (LPCSTR)Description; //TRACE("====CAdoConnection::Open =================================%s\n",m_strLastError);
    return FALSE;


    return hr == S_OK;
    }
      

  3.   


    Server=localhost是什么意思。这个localhost是一个服务器名吗?
    我的意思是如果这个软件放到别的PC上它的服务器名又不一样了呀。难道这个localhost是通用的吗?
      

  4.   

    localhost是本机,其他机器的话改成对应的机器名就可以。
      

  5.   

    可是我用了这个语句之后SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=xitao\0 SERVER=localhost\0 DATABASE=xitao\0 ""Trusted_Connection=Yes\0")连接失败:
    SQLState:'01000'
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen
    (Invalid Instance())
    连接失败:
    SQLState:'08001'
    SQLState 错误:14
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]无效的连接如果我把server=localhost改成本机的服务器名之后就成功了,这是什么回事?
      

  6.   


    可是我用了这个语句之后SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=xitao\0 SERVER=localhost\0 DATABASE=xitao\0 ""Trusted_Connection=Yes\0")连接失败:
    SQLState:'01000'
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen
    (Invalid Instance())
    连接失败:
    SQLState:'08001'
    SQLState 错误:14
    [Microsoft][ODBC SQL Server Driver][DBNETLIB]无效的连接如果我把server=localhost改成本机的服务器名之后就成功了,这是什么回事?PS:我在安装sql的时候并不是使用本机名,而是自己输入了一个名字
      

  7.   

    如果用户在安装sql server时没有用本机名作为SQL server的服务器名,那么server=localhost是不是就不对了。
      

  8.   

    如果用户在安装sql server时没有用本机名作为SQL server的服务器名,那么server=localhost是不是就不对了。