知道的朋友提供下方法,或者详细的代码,或者提供资料也可以,谢谢。

解决方案 »

  1.   

    上段代码void CAdoDlg::OnBtnQuery() 
    {
    // TODO: Add your control notification handler code here
    CoInitialize(NULL);
    _ConnectionPtr pConn(__uuidof(Connection));
    _RecordsetPtr pRst(__uuidof(Recordset));
    _CommandPtr pCmd(__uuidof(Command)); pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs";
    pConn->Open("","","",adConnectUnspecified); //pRst=pConn->Execute("select * from authors",NULL,adCmdText);
    //pRst->Open("select * from authors",_variant_t((IDispatch*)pConn),
    // adOpenDynamic,adLockOptimistic,adCmdText);
    pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
    pCmd->CommandText="select * from authors";
    pRst=pCmd->Execute(NULL,NULL,adCmdText);
    while(!pRst->rsEOF)
    {
    ((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
    (_bstr_t)pRst->GetCollect("au_lname"));
    pRst->MoveNext();
    }

    pRst->Close();
    pConn->Close();
    pCmd.Release();
    pRst.Release();
    pConn.Release();
    CoUninitialize();
    }
      

  2.   

    基本步骤:
    1.创建一个基于对话框的应用程序ADODatabase。2.创建一个用来连接的ADO类库。系统菜单中Insert->New Class项,class type选择Generic Class; 在Name后输入类名“ADOConn”,点OK。这样,在工程上自动生成ADOConn.h和ADOConn.cpp两个文件。3.在ADOConn.h中导入一个ADO动态链接库msado15.dll,添加代码:#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF"),同时在ADOConn.h中定义 public://添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection; //添加一个指向Recordset对象的指针: _RecordsetPtr m_pRecordset。4.m_pConnection->Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options) 操作。ConnectionString为VC++中对SQL SERVER中ADO设置。如,Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=suntest;Data Source=WWW-ED1F301E78B ;User Id=sa;Password=;
    其中Data Source为服务器名称,可以用Server代替,本机表示为.或者(local);Initial Catalog为你要使用的数据库名称 可以用Database代替;Integrated Security=SSPI表示用集成模式,此时uid 和pwd 设置不起作用;只有当Integrated Security=FALSE表示用混合模式,uid 和pwd 设置才起作用
    参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 adCmdProc-存储过程;adCmdUnknown-未知5.添加两个成员函数:(1)执行查询函数 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);(2)执行SQL语句 BOOL ExecuteSQL(_bstr_t bstrSQL)。
    给出两个文件的完整代码:/*------------------ADOConn.h File-------------------------------------------------*/// ADOConn.h: interface for the ADOConn class.#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)
    #define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000class ADOConn 
    {
    // 定义变量
    public:
    //添加一个指向Connection对象的指针:
    _ConnectionPtr m_pConnection;
    //添加一个指向Recordset对象的指针:
    _RecordsetPtr m_pRecordset;
    // 定义方法
    public:
    ADOConn();
    virtual ~ADOConn();
    // 初始化—连接数据库
    void OnInitADOConn();
    // 执行查询
    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
    // 执行SQL语句,Insert Update _variant_t
    BOOL ExecuteSQL(_bstr_t bstrSQL);
    void ExitConnect();
    };#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)/*--------------------------------------------------------------------------------*/
    /*---------------------ADOConn.cpp File---------------------------*/#include "stdafx.h"
    #include "ADOConn.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endifADOConn::ADOConn()
    {}ADOConn::~ADOConn()
    {}// 初始化—连接数据库
    void ADOConn::OnInitADOConn()
    {
    // 初始化OLE/COM库环境
    ::CoInitialize(NULL);try
    {
    // 创建Connection对象
    m_pConnection.CreateInstance("ADODB.Connection");
    // 设置连接字符串,必须是BSTR型或者_bstr_t类型
    _bstr_t strConnect = "Provider=SQLOLEDB; Server=CZ;Database=HrSys; uid=sa; pwd=sa;";
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    // 捕捉异常
    catch(_com_error e)
    {
    // 显示错误信息
    AfxMessageBox(e.Description());
    }
    }// 执行查询
    _RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
    {
    try
    {
    // 连接数据库,如果Connection对象为空,则重新连接数据库
    if(m_pConnection==NULL)
       OnInitADOConn();
    // 创建记录集对象
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    // 取得表中的记录
    m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    // 捕捉异常
    catch(_com_error e)
    {
    // 显示错误信息
    AfxMessageBox(e.Description());
    }
    // 返回记录集
    return m_pRecordset;
    }// 执行SQL语句,Insert Update _variant_t
    BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
    {
    // _variant_t RecordsAffected;
    try
    {
    // 是否已经连接数据库
    if(m_pConnection == NULL)
       OnInitADOConn();
    // Connection对象的Execute方法:(_bstr_t CommandText,
    // VARIANT * RecordsAffected, long Options )
    // 其中CommandText是命令字串,通常是SQL命令。
    // 参数RecordsAffected是操作完成后所影响的行数,
    // 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
    // adCmdProc-存储过程;adCmdUnknown-未知
    m_pConnection->Execute(bstrSQL,NULL,adCmdText);
    return true;
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description());
    return false;
    }
    }void ADOConn::ExitConnect()
    {
    // 关闭记录集和连接
    if (m_pRecordset != NULL)
    m_pRecordset->Close();
    m_pConnection->Close();
    // 释放环境
    ::CoUninitialize();
    }原文连接:http://apps.hi.baidu.com/share/detail/18694643
      

  3.   


    _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;UsreID=sa;Initial Catalog=pubs";编译的时候报错,说什么连接字符串属性无效,是何原因。
      

  4.   


     _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=manage;Data Source=9A61C87AD7BB4B8";我改成这样的,也有报错,说什么数据库不存在
    我就是不知道Initial catalog怎么去设置,还有Data source 数据源怎么设置
      

  5.   

    然后我再改成这个:
     _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Data;Data Source=BEANS";
    Data是数据库的名字,BEANS是SQL服务管理的名称,也报错。
    说用户Sa登陆失败,未与信任的SQL SERVER链接相关联