標籤:err height cti system space nec rms stat import
1 用的是ADODB,所以在StdAfx.h檔案裡面的 #include <afxwin.h> 後面加這句話 2 #import "C:\program files\common files\System\ado\msado15.dll" no_namespace 3 rename("EOF", "adoEOF") 4 5 //CDataManage.h 6 定義變數,資料結構(與資料庫中表的欄位對應,即儲存資料表中欄位的資訊)及函數(CDataManage()建構函式,~CDataManage(){解構函式,Break()斷開資料庫連接,ConnectDBase(char* DBPath) //串連資料庫,ReadDatabaseInfo(ImageInf imageinfo)//讀取資料 7 8 ) 9 10 11 //CDataManage.cpp 12 #include "stdafx.h" 13 #include "CDataManage.h" 14 15 extern char g_ImageDBPath[256];//g打頭的為全域變數,儲存映像路徑的變數 16 CDataManage::CDataManage(){ //建構函式 17 m_pConnection=NULL; //初始化連線物件NULL 18 } 19 20 CDataManage::~CDataManage(){//解構函式 21 22 if(m_pConnection!=NULL) 23 { 24 if(m_pConnection->State) 25 m_pConnection->Close(); 26 } 27 m_pConnection=NULL; 28 } 29 void CDataManage::Break(){//斷開資料庫連接 30 if(m_pConnection!=NULL) 31 { 32 if(m_pConnection->State) 33 m_pConnection->Close(); 34 } 35 m_pConnection=NULL; 36 } 37 38 bool CDataManage::ConnectDBase(char* DBPath){ //串連資料庫 39 // AfxOleInit(); 40 HRESULT hr; //建立對象 41 try 42 { 43 hr = m_pConnection.CreateInstance("ADODB.Connection"); //建立Connection對象 44 if (SUCCEEDED(hr)) //建立成功 45 { 46 hr = m_pConnection->Open(DBPath,"","",adConnectUnspecified); 47 //DBPath是字串類型的資料庫存放路徑,寫時要加雙引號 48 //串連資料庫注意DataSource路徑的寫法 49 //AfxMessageBox("串連資料庫成功"); 50 } 51 m_pRecordset.CreateInstance("ADODB.Recordset"); 52 } 53 catch(_com_error e) //聯結異常處理 54 { 55 CString errorMsg; 56 errorMsg.Format("串連資料庫失敗\r\n錯誤資訊:%s",e.ErrorMessage()); 57 // AfxMessageBox(e.Description()); 58 return false;//顯示錯誤資訊 59 } 60 return TRUE; 61 } 62 63 int CDataManage::ReadDatabaseInfo(ImageInf imageinfo){//讀取資料 64 char Sql[100]; 65 CString date; 66 CString UBirth; 67 int year,month,day; 68 _variant_t var; 69 sprintf(Sql,"select * from ImageTable where 資料庫字欄位=‘%s‘",ImageTable.資料庫字欄位資料); 70 m_pRecordset->Open(Sql,m_pConnection.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown); 71 72 if(m_pRecordset->GetRecordCount()>0){//資料庫中讀取到資料 73 m_pRecordset->MoveFirst(); 74 while(!m_pRecordset->adoEOF){ 75 _variant_t var; 76 var=m_pRecordset->GetCollect(""); 77 78 79 if(m_pRecordset->GetState()==1){ 80 m_pRecordset->Close(); 81 } 82 return 1; 83 } 84 85 if(m_pRecordset->GetRecordCount()>0) { 86 var=m_pRecordset->GetCollect("資料庫欄位名"); 87 g_ImageDBPath=(char)var;//g_ImageDBPath全域變數裡面是圖片的路徑 88 } 89 } 90 //下面幾行是迴圈讀取資料庫中的記錄,根據情況添加 91 /* if(m_pRecordset->GetRecordCount()>0) 92 imageID=10000+m_pRecordset->GetRecordCount()+1; 93 else imageID=10000+1; 94 */ 95 96 97 } 98 99 100
View Code
C++使用ADODB串連資料庫