VS2005经过ADO连接SQL Server数据库总失败

VS2005通过ADO连接SQL Server数据库总失败
我使用XP操作系统,通过VS的ADO连接数据库。我使用的数据库是SQL Server2005。这个数据库使用的是windows登录方式。登录的用户名有中文。

我在(VS2005)服务器资源管理器中建立了数据连接,并且获知了连接字符串。但是我将字符串放入程序中运行时,出现了这个错误:“多步 OLE DB操作产生错误。如果可能,请检查每个 OLE DB 状态值,没有工作被完成。”
我的连接字符串是这样的:Data Source=LENOVO-B9B16E47;Initial Catalog=waterdb;Integrated Security=True
请问各位大神,究竟我错了哪儿呢?

------解决方案--------------------
一、ADO简介:
    ADO(ActiveX Data Object)是微软数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术。

    ADO常用接口介绍:
    ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
    _ConnectionPtr接口返回一个记录集或一个空指针。
    通常使用它来创建一个数据连接或者执行一条不返回任何结果的SQL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。
    
    _CommandPtr接口返回一个记录集。
    它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
    在使用_CommandPtr接口时,可以利用全局的_ConnectionPtr接口,也可以在_ConnectionPtr接口里面直接使用连接串。如果只执行一次或几次数据,则使用连接字符串进行连接,如果要频繁的连接数据库,那么使用全局的_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。

    _RecordsetPtr是一个记录集对象。
    与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,不一定要使用一个已经创建好的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果是要使用多个记录集,那也需要创建一个全局的_ConnectionPtr接口,然后再通过_RecordsetPtr执行存储过程和SQL语句。


二、基本流程:
    ADO数据库开发的基本流程:
    (1)初始化COM库,引入ADO库定义文件;
    (2)用Connection对象连接数据库;
    (3)利用已经建立好的连接,通过Connection、Command对象执行SQL命令,或者利用Recordset对象取得记录集进行查询、处理。
    (4)操作完毕后关闭连接,释放对象

    【1】初始化Com库
     使用AfxOleInit()来初始化Com库:
     BOOL CFirstADODemoApp::InitInstance()
     {
//初始化COM库
if(!AfxOleInit())
{
::AfxMessageBox(_T("OLE初始化出错!"));
return FALSE;
}
        ......
     }

    【2】用#import指令引入ADO类型库
     在stdafx.h添加如下语句:
     #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

    【3】使用Connection对象指针打开一个数据库连接
     添加一个指向Connection对象的指针
     _ConnectionPtr m_pConnection;
     打开连接
     // 数据库连接
     //连接字符串里面各个属性所代表的意思,详细的参见http://msdn.microsoft.com/en-us/library/f28szy5b%28vs.71%29.aspx
    void CFirstADODemoDlg::DBConect(void)
    {
HRESULT hr;
try
{
//创建连接对象
hr = m_pConnection.CreateInstance("ADODB.Connection");

if(SUCCEEDED(hr))
{
//设置连接字符串
//_bstr_t strConnect = "Provider=SQLOLEDB.1;Data Source=ZHOUWEI\\MYSQL;Initial Catalog=AMS;User ID=sa;PWD=123456";
_bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security = SSPI;Persist Security Info = FALSE;Data Source=WANGLIANG\\SQLEXPRESS;Initial Catalog=ADODemo";
//设置连接超时时间为5秒
m_pConnection->ConnectionTimeout = 5;
//连接数据库
hr = m_pConnection->Open(strConnect, "", "", adModeUnknown);
}
}
catch(_com_error e)
{
CString errorMsg;
errorMsg.Format("连接数据库失败!\r错误信息:%s",(LPCSTR)e.ErrorMessage());
AfxMessageBox(errorMsg);