当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>Visual C++教程

VC++下使用ADO编写数据库程序

    准备:

    (1)、引入ADO类

    #import "c:\program files\common files\system\ado\msado15.dll" \

    no_namespace \

    rename ("EOF", "adoEOF")

    (2)、初始化COM

    在MFC中可以用AfxOleInit();非MFC环境中用:

    CoInitialize(NULL);

    CoUnInitialize();

    (3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr

    1.连接和关闭数据库

    (1)连接

    例子:连接Access数据库

    AfxOleInit();//初始化

    HRESULT hr;

    try

    {

    hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象

    if(SUCCEEDED(hr))

    {

    m_pConnection->ConnectionTimeout = 0;

    hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);

    //m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库

    m_pCommand.CreateInstance(__uuidof(Command));

    m_pCommand->CommandTimeout = 5;

    m_pCommand->ActiveConnection = m_pConnection;

    }

    }

    catch(_com_error e)///捕捉异常

    {

    CString errormessage;

    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());

    AfxMessageBox(errormessage);///显示错误信息

    }

    (2)、关闭

    //如果数据库连接有效

    if( m_pConnection->State )

    m_pConnection->Close();

    m_pConnection = NULL;

    (3)、设置连接时间 //设置连接时间-----------------------------------

    pConnection->put_ConnectionTimeout(long(5));

    2.打开一个结果集

    (1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果

    _RecordsetPtrm_pRecordset;

    m_pRecordset.CreateInstance(__uuidof(Recordset));

    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,

    // 因为它有时会经常出现一些意想不到的错误。jingzhou xu

    try

    {

    m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段

    m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针

    adOpenDynamic,

    adLockOptimistic,

    adCmdText);

    }

    catch(_com_error *e)

    {

    AfxMessageBox(e->ErrorMessage());

    }

 

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接