thank you

解决方案 »

  1.   

    http://www.yesky.com/277/1893277.shtml
      

  2.   

    .CPP
    // ADOConn.cpp: implementation of the ADOConn class.
    //
    //////////////////////////////////////////////////////////////////////#include "stdafx.h"
    #include "ADOConn.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////ADOConn::ADOConn()
    {}ADOConn::~ADOConn()
    {}// 初始化—连接数据库
    void  ADOConn::OnInitADOConn()
    {
    // 初始化OLE/COM库环境 
    ::CoInitialize(NULL);
      
    try
    {
    // 创建Connection对象
    m_pConnection.CreateInstance("ADODB.Connection");
    // 设置连接字符串,必须是BSTR型或者_bstr_t类型
    _bstr_t strConnect = "driver={SQL Server};Server=ZHAOJIE-PC\\SQLEXPRESS;Database=Astroboy;uid=sa;pwd=123";
    //_bstr_t strConnect = "driver={SQL Server};Server=.;Database=Astroboy;uid=sa;pwd=1";
    m_pConnection->ConnectionTimeout=20;
    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();
    }
      

  3.   

     头文件
    // 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")
    #pragma warning(disable:4146)
    #import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
    #pragma warning(default:4146)
    using namespace ADODB;#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_)
      

  4.   

    用了别人的东西,不能不说谢谢的,要不然良心有愧啊,我用了你的代码成功的连接了sqlserver数据库,真的很好