这是小弟我用C++写的 用ODBC连接MSSQL数据库的代码 编译没有异常,但是就是连接不上。各位帮小弟我看看吧

这是我用C++写的 用ODBC连接MSSQL数据库的代码 编译没有错误,但是就是连接不上。各位帮我看看吧~
#include "stdafx.h"
#include <string>
#include <iostream>
#include <stdio.h>
#include <comdef.h>
#include <conio.h>

using namespace std;

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
  rename("EOF", "EndOfFile")

ADODB::_RecordsetPtr rec1=NULL;
_variant_t vtMissing1(DISP_E_PARAMNOTFOUND, VT_ERROR); 

char servernumber[]="1";
char szServerPort[]="1433";
char g_provider_UserDB[]="SQLOLEDB.1";
char g_initialcatalog_UserDB[]="UserDB";
char g_datasource_UserDB[]="127.0.0.1";
char g_userid_UserDB[]="sa";
char g_password_UserDB[]="admin1111";
char stget[100];
char buf[1024];
char m_ErrStr[256];
bool Open(char* UserName, char* Pwd,char* CnnStr);

#define DB_CONFIG "Provider=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s"


#define CATCHERROR(ptr,a) catch(_com_error &e) { e = NULL; ptr=NULL; return a; }

#define CATCHERRGET catch(_com_error &e) { e = NULL; return 0; }


typedef ADODB::_RecordsetPtr RecPtr;
typedef ADODB::_ConnectionPtr CnnPtr; 
CnnPtr m_Cnn;
RecPtr m_Rec;

int _tmain(int argc, _TCHAR* argv[])
{

sprintf(buf, DB_CONFIG, g_provider_UserDB,g_userid_UserDB, g_initialcatalog_UserDB, g_datasource_UserDB);
if(!Open(g_userid_UserDB,g_password_UserDB,buf)){
cout <<"not connectDB \n";
}else{
cout<<"connect DB\n";
}
return 0;
}
bool Open(char* UserName, char* Pwd,char* CnnStr)
{
try
{
HRESULT hr;
hr = m_Cnn.CreateInstance( __uuidof( ADODB::Connection ) );
m_Cnn->Open(CnnStr,UserName,Pwd,NULL);
}

CATCHERROR(m_Cnn,0);

cout<<m_ErrStr;

return 1;
}

------解决方案--------------------
探讨
引用:
还要记得在Init中初始化

AfxOleInit();



这个要在什么地方初始化啊~?
还有 能不能给我详细的说明一下 连接字符串值啊?