HRESULT hr;
try
{
     hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
CString strSql;
char Source[30],uid[30],pwd[30],DBName[30];
memset(Source,0,sizeof(Source));
memset(uid,0,sizeof(uid));
memset(pwd,0,sizeof(pwd));
memset(DBName,0,sizeof(DBName));
::GetPrivateProfileString("DB","Source","",Source,30,".\\init.ini"); 
::GetPrivateProfileString("DB","UID","",uid,30,".\\init.ini"); 
::GetPrivateProfileString("DB","PWD","",pwd,30,".\\init.ini"); 
::GetPrivateProfileString("DB","database","",DBName,30,".\\init.ini"); 
strSql.Format("Provider=SQLOLEDB;Data Source=%s;User ID=%s;Password=%s;Persist Security Info=True;Initial Catalog=%s",Source,uid,pwd,DBName);
           hr = m_pConnection->Open((_bstr_t)strSql,"","",adModeUnknown); }
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
    }在Data Source出问题!!运行期错误,捕捉到异常,说是连接数据库失败:未指明错误!改成DataSource或Source就正常,但这样写到其它机子上会不会又不行。因为之前用Provider=SQLOLEDB;server=%s;uid=%s;pwd=%s;database=%s在本机正常运行,在另外的机子上不行才改掉。
请问哪位大侠能指点迷津,说说那连接串的问题在哪,有什么办法解决?补充,数据库在本地。

解决方案 »

  1.   

    异常改成这个样子看是什么错误。
    try
    {
    //你的ADO代码
    }
    catch (_com_error& e)
    {
    AfxMessageBox(e.Description());
    }
    Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
      

  2.   

    回竹叶青:改后异常是[DBNETLIB]connecttionOpen (PreLoginHandshake())一般网络错误,请检查网络文档
      

  3.   

    你通过WINDOWS控制面板里面的ODBC数据源那里 设置一下,测试通过后,把那串字符串拷贝过来,然后改改赋值变量,应该没撒问题
      

  4.   

    网上搜下这个错误就出来解决方法了。
    http://hi.baidu.com/15460/blog/item/c77b9dd32e841536960a1667.html
      

  5.   

    [DBNETLIB]connecttionOpen (connecttion())sql sever不存在或拒绝访问
    现在提示是这样
      

  6.   

    sqlserver 允不允许网络访问?
      

  7.   

    你现在的登陆用户是否在SQL服务器那端有授权?
      

  8.   

    网络访问?是访问本地的数据库啊。Data Source=127.0.0.1,1433
      

  9.   

    Data Source=127.0.0.1,1433改成Data Source=127.0.0.1
      

  10.   

    数据库没启动吧,到命令行输入“telnet 127.0.0.1 1433”看是否能连接上。 
      

  11.   

    建立一个测试工程,然后拖一个Microsoft ADO Data Control 6.0 (SP6) (OLEDB)
    进去。通过属性弄个连接进去,然后测试一下。然后对比下你的连接CString 和自动生成的CString有什么区别没。
      

  12.   

    额,被技术经理不耐烦的一句“是不是你的sql server版本的TCP/IP没开啊”,重启后正常
      

  13.   

    不好意思,打扰大家这么久,很少用sql server,没注意过有个TCP/IP的还要手动去启动的
      

  14.   

    TCP/IP,似乎2005开始就需要自己配置了