1. 程式人生 > >mfc 鏈接 access 2007 數據庫

mfc 鏈接 access 2007 數據庫

erro mfc ora com esp 列表 對話 provider fine


神馬也不說了,直接給出源代碼和project


原理這個東西 Google 下。都出來了。自己就說下作為新手 ,

1 應該打印出,鏈接錯誤原因

2 應該將數據庫放到project以下,特別註意這點


給出部分源代碼。也能夠去看我上傳的project

stdafx.h

// stdafx.h : 標準系統包括文件的包括文件,
// 或是常常使用但不常更改的
// 特定於項目的包括文件

#pragma once

#ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 從 Windows 頭中排除極少使用的資料
#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 構造函數將是顯式的

// 關閉 MFC 對某些常見但常常可放心忽略的警告消息的隱藏
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 核心組件和標準組件
#include <afxext.h>         // MFC 擴展


#include <afxdisp.h>        // MFC 自己主動化類



#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC 對 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // MFC 對 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxcontrolbars.h>     // 功能區和控件條的 MFC 支持

#include <afxdb.h>







#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘x86‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘amd64‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
#else
#pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘*‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")

/*
#import "c:\program files\common files\system\ado\msado15.dll" 	no_namespace 	rename ("EOF", "adoEOF")       
using namespace ADODB;
*/
#endif
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace 	rename("EOF","adoEOF")rename("BOF","adoBOF")     

//using namespace ADODB;

#endif


鏈接代碼.cpp

// mfcLinkAccess.cpp : 定義應用程序的類行為。
//

#include "stdafx.h"
#include "mfcLinkAccess.h"
#include "mfcLinkAccessDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CmfcLinkAccessApp

BEGIN_MESSAGE_MAP(CmfcLinkAccessApp, CWinApp)
	ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()


// CmfcLinkAccessApp 構造

CmfcLinkAccessApp::CmfcLinkAccessApp()
{
	// 支持又一次啟動管理器
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO: 在此處加入構造代碼,
	// 將全部重要的初始化放置在 InitInstance 中
}


// 唯一的一個 CmfcLinkAccessApp 對象

CmfcLinkAccessApp theApp;


// CmfcLinkAccessApp 初始化

BOOL CmfcLinkAccessApp::InitInstance()
{
	// 假設一個執行在 Windows XP 上的應用程序清單指定要
	// 使用 ComCtl32.dll 版本號 6 或更高版本號來啟用可視化方式,
	//則須要 InitCommonControlsEx()。否則,將無法創建窗體。

AfxEnableControlContainer();//加入的初始化OLE/COM環境代碼 if(!AfxOleInit()) { AfxMessageBox(_T("初始化OLE DLL失敗!")); return FALSE; } HRESULT hr = ::CoInitialize(NULL); if (!SUCCEEDED(hr)) { AfxMessageBox(_T("初始換COM失敗"));///顯示錯誤信息 } _ConnectionPtr m_pConnection; //_bstr_t strConnect(strConnction); try { hr = m_pConnection.CreateInstance(__uuidof(Connection));///創建Connection對象 ; if (SUCCEEDED(hr)) { hr = m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=demo.mdb;Persist Security Info=False","","",adModeUnknown);///連接數據庫 //上面一句中連接字串中的Provider是針對ACCESS2000環境的,對於ACCESS97, //須要改為:Provider=Microsoft.Jet.OLEDB.3.51; //AfxMessageBox(_T("鏈接成功!")); } } catch (_com_error e) { CString errormessage; errormessage.Format(_T("連接數據庫失敗!\r\n錯誤信息:%s"), e.ErrorMessage()); AfxMessageBox(errormessage);///顯示錯誤信息 AfxMessageBox(e.Description());///顯示錯誤信息 return -1; } INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 將它設置為包括全部要在應用程序中使用的 // 公共控件類。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); // 創建 shell 管理器,以防對話框包括 // 不論什麽 shell 樹視圖控件或 shell 列表視圖控件。 CShellManager *pShellManager = new CShellManager; // 標準初始化 // 假設未使用這些功能並希望減小 // 終於可執行文件的大小,則應移除下列 // 不須要的特定初始化例程 // 更改用於存儲設置的註冊表項 // TODO: 應適當改動該字符串, // 比如改動為公司或組織名 SetRegistryKey(_T("應用程序向導生成的本地應用程序")); CmfcLinkAccessDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置處理何時用 // “確定”來關閉對話框的代碼 } else if (nResponse == IDCANCEL) { // TODO: 在此放置處理何時用 // “取消”來關閉對話框的代碼 } // 刪除上面創建的 shell 管理器。 if (pShellManager != NULL) { delete pShellManager; } // 因為對話框已關閉,所以將返回 FALSE 以便退出應用程序, // 而不是啟動應用程序的消息泵。 return FALSE; }


還不清楚 就下載我的project吧!

mfc 鏈接 access 2007 數據庫