VS2010操作Acess数据库

3 篇文章 0 订阅

VS2010操作Acess数据库

1. 开发环境

  • 编程环境 VS2010
  • win7 64位、Acess2007

2. 基本功能实现

  • 通过Ado编程、连接Acessss数据库。

3. 操作步骤

  • 新建MFC工程SQLTest、在stdafx.h 里 #import “C:\Program Files\Common Files\System\ado\msado15.dll” no_namespace rename(“EOF”,”adoEOF”)(也可以将msado15.dll”复制到工程目录下,直接#import “msado15.dll”)
  • 初始化COM组件
BOOL CSQLTestApp::InitInstance()
{
    if(CoInitialize(NULL)!=S_OK)
    {
        AfxMessageBox("初始化Com失败!")
        return false;
    }
    ``````
}
  • 结束实例时释放COM资源
int CSQLTestApp::ExitInstance()
{
        CoUninitialize();//释放COM资源  
    return CWinApp::ExitInstance();
}
  • 链接数据库
/*********************************************************************
*函数名:   OpenConnect      打开数据库连接
*参    数:    username         用户名
*           password         密码
*           strPath          数据库保存路径
*返 回 值: true 成功
**********************************************************************/
bool CAdoServer::OpenConnect(CString username, CString password, CString strPath)
{
    //通过JET数据库引擎对ACCESS2000数据库的连接:
    CString lpszConnect= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=";//64位
    //lpszConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s";  32位
    lpszConnect+=strPath;
    m_hr = m_pConnection.CreateInstance("ADODB.Connection");
    try
    {
        m_hr = m_pConnection->Open(_bstr_t(lpszConnect),(_bstr_t)username,(_bstr_t)password,adModeUnknown); //连接数据库
        if(SUCCEEDED(m_hr))
        {
        m_hr = m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象实例 
        }
    }
    catch (_com_error e)
    {
        CString err;
        err.Format("<提示:>连接错误!\r\n错误信息:%s:",e.ErrorMessage());
        AfxMessageBox(err);
        return false;
    }
    m_IsConnectSucess = true;   //数据库连接成功
    return true;
}
  • 打开记录集(执行SQL语句)
bool CAdoServer::OpenRecordset(_bstr_t sql)
{
    try
    {
    ColseRecordset();
    m_hr = m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    }
    catch (_com_error e)
    {
    CString str;
    str.Format("<提示:>执行Oracle命令出现错误,错误原因:%s",e.ErrorMessage());
        AfxMessageBox(str);
        return false;
    }
    m_IsConnectSucess = true;   //数据库连接成功
    return true;

}
  • 关闭记录集
void CAdoServer::ColseRecordset(void)
{
    if(m_pRecordset->GetState() ==adStateOpen)  //判断当前记录集状态
    {
        m_pRecordset->Close();      //关闭记录集
    }
    m_IsOpenRecordset = false;      //记录集关闭状态
}
  • 关闭数据库连接
    void CAdoServer::CloseConnect(void)
    {
    m_pConnection -> Close(); //关闭数据库连接
    m_IsConnectSucess = false; //数据库关闭
    }
    注释:两个智能指针
    _ConnectionPtr m_pConnection; // 连接对象
    _RecordsetPtr m_pRecordset; // 记录集对象
    基本执行步骤:
    初始化COM->OpenConnect(连接数据库)->OpenRecordset(执行SQL语句)->ColseRecordset->CloseConnect->释放COM

4. 总结

  • 这里只是介绍了一种连接与操作数据库的方法,简单的操作步骤大致如上。其实完全可以自己封装成一个类,根据需要添加功能。
  • 关于SQL语句,后续会更新总结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值