VC動態連結資料庫類ADOConn

來源:互聯網
上載者:User

//環境Windows XP SP3+VS2010 UNICODE//標頭檔ADOConn.h

#pragma once


#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace  \rename("EOF","adoEOF") rename("BOF","adoBOF")
class ADOConn{public:ADOConn(void);~ADOConn(void);void OnInitADOConn();void ExitConnect();_RecordsetPtr& GetRecordset(_bstr_t bstrSQL);BOOL ExecuteSQL(_bstr_t bstrSQl);
//public:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;};
//實現檔案ADOConn.cpp#include "StdAfx.h"
#include "ADOConn.h"
ADOConn::ADOConn(void){}
ADOConn::~ADOConn(void){}
void ADOConn::OnInitADOConn(){//初始化OLE/COM庫環境::CoInitialize(NULL);try{m_pConnection.CreateInstance("ADODB.Connection");// 設定連接字串,必須是BSTR型或者_bstr_t類型
TCHAR szFilePath[MAX_PATH + 1];GetModuleFileName(NULL, szFilePath, MAX_PATH);(_tcsrchr(szFilePath, _T('\\')))[1] = 0;             //刪除檔案名稱,只獲得路徑。CString dbpath= szFilePath;TRACE1("dbpath = %s\n",dbpath);
//Access 2003//_bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver(*.mdb)};DBQ=nkj.mdb;";    //Access 2003標準連結  //_bstr_t strConnect  = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\App1\你的資料庫名.mdb; Exclusive=1; Uid=你的使用者名稱; Pwd=你的密碼;"  //獨佔方式串連 _bstr_t strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + dbpath  + _T("data\\nkj.mdb;User ID=admin;Password=;");
  //普通方式無密碼  
//_bstr_t strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + dbpath + _T("data\\nkj.mdb;Jet OLEDB:Database Password=你的密碼;");   //普通方式,有密碼 
//Access 2007//_bstr_t strConnect =Provider="Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False; " ;   //標準安全連結//_bstr_t strConnect =Provider="Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Jet OLEDB:Database Password=MyDbPassword;";    //包括資料庫密碼
//SQL Server//_bstr_t strConnect = "Provider=SQLOLEDB; Server=127.0.0.1;Database=Mis; uid=sa; pwd=sa;";
m_pConnection->Open(strConnect,"","",adModeUnknown);}catch (_com_error e){AfxMessageBox(e.Description());}}
void ADOConn::ExitConnect(){
if (m_pRecordset!=NULL){m_pRecordset->Close();}m_pConnection->Close();
::CoUninitialize();}
_RecordsetPtr& ADOConn::GetRecordset(_bstr_t bstrSQL){try{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_tBOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL){_variant_t RecordAffected;try{if (m_pConnection == NULL){OnInitADOConn();}m_pConnection->Execute(bstrSQL,NULL,adCmdText /*文本命令*/);return TRUE;}catch (_com_error e){AfxMessageBox(e.Description());return FALSE;}
}
//簡單用法,記得在XXX.CPP添加  #include "ADOConn.h"
BOOL CXXX::OnInitDialog()
{

  //其他代碼m_listUser.SetExtendedStyle(m_listUser.GetExtendedStyle()|LVS_EX_HEADERDRAGDROP|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE);m_listUser.InsertColumn(0, _T("#"), LVCFMT_LEFT,20);m_listUser.InsertColumn(1, _T("使用者"), LVCFMT_LEFT, 60);m_listUser.InsertColumn(2, _T("性別"), LVCFMT_LEFT, 60);m_listUser.InsertColumn(3, _T("職務"), LVCFMT_LEFT, 60);m_listUser.InsertColumn(4, _T("使用者類型"), LVCFMT_LEFT, 80);ADOConn  m_AdoConn;//open databasem_AdoConn.OnInitADOConn();CString  sql;sql.Format(_T("select* from tbUser order by No desc"));_RecordsetPtr   m_pRecordset;m_pRecordset = m_AdoConn.GetRecordset((_bstr_t)sql);//遍曆記錄集while(m_AdoConn.m_pRecordset->adoEOF  == 0){m_listUser.InsertItem(0,_T(""));m_listUser.SetItemText(0,0,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("No"));m_listUser.SetItemText(0,1,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("user"));m_listUser.SetItemText(0,2,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("sex"));m_listUser.SetItemText(0,3,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("position"));m_listUser.SetItemText(0,4,(TCHAR *)(_bstr_t)m_pRecordset->GetCollect("permissions"));m_pRecordset->MoveNext();}m_AdoConn.ExitConnect();
  //其他代碼

return TRUE;  // return TRUE unless you set the focus to a control// 異常: OCX 屬性頁面應返回 FALSE}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.