zoukankan      html  css  js  c++  java
  • ADO连接数据库

    1. 引入ADO数据库文件msado15.dll,在stdafx.h文件中添加如下代码

    1 #import "C:\Program Files\Common Files\System\ado\msado15.dll" \
    2 no_namespace rename ("EOF", "adoEOF")

    2. 在stdafx.h头文件中引入afxdb.h头文件

    1 #include "afxdb.h"

    3. 初始化OLE DB环境,在InitInstance文件中添加如下代码

    1 if (!AfxOleInit()) {
    2     return false;
    3 }


    至此,初始化ADO的工作已经做好,下一步就是连接数据库和打开记录集了

    4. 在主对话框的头文件中添加两个成员变量

    1 _ConnectionPtr m_pConnection_;
    2 _RecordsetPtr m_pRecordset_;

    5. 在主对话框的头文件中添加一个成员函数bool DB_Connection(),用于连接数据库;添加一个成员函数bool Recordset_Connection(CString sql),用于打开记录集

    1 bool DB_Connection();
    2 bool Recordset_Connection();

    6. 在主对话框的Cpp文件中实现这两个函数

     1 bool CNLCDlg::DB_Connection() {
     2     HRESULT hr;
     3     try {
     4         hr = m_pConnection_.CreateInstance(__uuidof(Connection));
     5         if (SUCCEEDED(hr)) {
     6             _bstr_t strConnect = "driver={sql server};server=(local);uid=;pwd=;database=DB_NLC";
     7             hr = m_pConnection_->Open(strConnect, "", "", adConnectUnspecified);
     8             if (FAILED(hr)) {
     9                 AfxMessageBox(_T("连接数据库失败!"));
    10                 return FALSE;
    11             }
    12         } else {
    13             AfxMessageBox(_T("创建Connection对象失败!"));
    14             return FALSE;
    15         }
    16     } catch (_com_error e) {
    17         _bstr_t bstrSource = e.Source();
    18         _bstr_t bstrDescription = e.Description();
    19         AfxMessageBox(bstrSource + " " + bstrDescription);
    20         return FALSE;
    21     }
    22     return TRUE;
    23 }
     1 bool CNLCDlg::Recordset_Connection(CString sql) {
     2     HRESULT hr;
     3     try {
     4         hr = m_pRecordset_.CreateInstance(__uuidof(Recordset));
     5         if (FAILED(hr)) {
     6             AfxMessageBox(_T("创建记录集失败!"));
     7             return FALSE;
     8         } else {
     9             hr = m_pRecordset_->Open(_variant_t(sql), 
    10                                      m_pConnection_.GetInterfacePtr(),
    11                                      adOpenDynamic,
    12                                      adLockOptimistic,
    13                                      adCmdText);
    14             if (FAILED(hr)) {
    15                 AfxMessageBox(_T("打开记录集失败!"));
    16                 return FALSE;
    17             }
    18         }
    19     } catch (_com_error e) {
    20         _bstr_t bstrSource = e.Source();
    21         _bstr_t bstrDescription = e.Description();
    22         AfxMessageBox(bstrSource + " " + bstrDescription);
    23         return FALSE;
    24     }
    25     return TRUE;
    26 }
  • 相关阅读:
    原来针对新唐mcu,keil有免费许可
    使用IAR在开发nordic问题记录
    arm的开发工具
    nordic芯片开发——烧写方法记录
    生活感想(三)——心理学其实很有用
    生活感想(二)——心理学其实很有用
    多线程编程基础知识
    多线程编程简介
    winsock的io模型(终极篇)
    ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?
  • 原文地址:https://www.cnblogs.com/yewei/p/2828025.html
Copyright © 2011-2022 走看看