天天看點

VC資料庫程式設計

一、各種技術的關聯與差別

1、COM元件是什麼?http://baike.baidu.com/view/25941.htm?fr=ala0_1_1#4

1)COM是Component Object Model (元件對象模型)的縮寫。

2)COM是一種“軟體打包”技術。它使一個軟體能按各部分功能劃分成許多元件,COM定義了這些元件的結構和規範,彼此連接配接通訊的機制。

3)COM元件是遵循COM規範編寫出來的,以WIN32動态連結庫(DLL)或可執行檔案(EXE)形式釋出的可執行代碼組成,但其不是DLL,隻是利用DLL進行動态連結。

4)COM元件優點:

①讓對象模型完全獨立于程式設計語言,可用C++、Java和VB等任意一種語言編寫。

②可以被大多數應用程式再使用(這些應用程式稱為元件容器)。

③跨平台。

2、OLE是什麼?http://baike.baidu.com/view/118545.htm?fr=ala0_1_1

1)OLE:Object Linking and Embedding,對象連接配接與嵌入,簡稱OLE技術。

OLE包括:

①桌面應用程式內建。

②定義和實作了COM技術。

2)OLE DB是什麼?http://baike.baidu.com/view/239730.htm

OLE DB将傳統的資料庫系統劃分為多個邏輯元件,這些元件之間相對獨立又互相通信。

3、ActiveX是什麼?http://baike.baidu.com/view/28141.htm?fr=ala0_1_1

ActiveX、OLE核心技術都是COM。ActiveX和OLE的最大差別在于,OLE針對的是桌面上應用軟體和檔案之間的內建,而 ActiveX則以提供進一步的網絡應用與使用者互動為主。

具體點描述:一個可以自足的在ActiveX網絡(現在的網絡主要包括Windows和Mac)中任意運作的程式。這個元件就是ActiveX控件,ActiveX 控件是一種可重用的軟體元件,通過使用 ActiveX控件,可以很快地在網址、台式應用程式、以及開發工具中加入特殊的功能。如:AVCapture 音/視訊捕捉 1.12,基于DirectShow技術開發的音視訊訊号捕捉ActiveX控件;ShuX XPMenu ActiveX Control 中文版 1.0.3能使您快速設計出Office XP風格的菜單。

4、ADO是什麼?

ADO(ActiveX Data Objects) 是一個用于存取資料源的COM元件,包含一組動态連結庫,是OLE DB的高層接口。

5、ODBC、OLE DB、ADO的關系?http://tilt.lib.tsinghua.edu.cn/node/245

ODBC最先出來,是用來連接配接oracle、sql server、access等資料庫的一種接口标準(後來随着各廠商的擴充,也就都不标準了),各資料庫提供實作ODBC的“驅動程式”。ODBC的本意是“ODBC的最大優點是能以統一的方式處理所有的資料庫”,其實都是扯淡,因為各資料庫對标準SQL都做了大量的擴充,除非你隻使用标準的SQL,不然“統一”根本談不上。

    OLE DB是微軟“發明”的,用來淘汰ODBC的,OLE DB不光可以連接配接各種資料庫,還可以連接配接exchange、活動目錄、甚至作業系統檔案目錄等各種資料庫源(也需要分别使用不同的“驅動程式”)

    ADO也是微軟的,是用來淘汰早起微軟的RDO、DAO的(ADO可以做RDO、DAO能做的所有事),ADO在上層,通過下面的ODBC或者OLE DB來通路資料源(注意不是資料庫,因為可通路範圍包括活動目錄等各種資料)。不過微軟目前的ODBC實際是通過OLE DB通路資料源的。

層次關系:

    應用程式 -> ADO -> ODBC -> OLE DB -> 資料源

    或者

    應用程式 -> ADO -> OLE DB -> 資料源

二、涉及的知識點:

1、子產品群組件的差別:http://zhidao.baidu.com/question/78606176.html

子產品是偏向設計的概念,更強調邏輯功能上的劃分。

元件式偏向發行的概念,強調“跨項目的可重用性”。

2、操作/系統平台和作業系統的差別?

可以這麼說,作業系統是操作平台的一個小類. 操作平台有微軟的windows平台和DOS平台,另外還有代碼公開的linux操作平台.而每個操作平台又有好幾個不同的作業系統,如windows作業系統就分windows95/98/2000,windowsXP,windows VISTA, windows NT, windows 7等等……。

而我們常說的系統平台是指的硬體平台.也就是電腦的的硬體技術水準的一個代表,象現在常聽的k8平台就是由k8的主版配AMD的CPU組成的.   3、驅動程式/裝置驅動程式(Device Driver):是一種可以使計算機和裝置通信的特殊程式,即是硬體的接口,作業系統(軟體)隻有通過這個接口,才能控制硬體裝置的工作。假如某裝置的驅動程式未能正确安裝,便不能正常工作。是以,驅動程式被譽為““硬體和系統間的橋梁”。   4、資料庫相關部件的關系 1)資料庫——資料:是資料的集合,由一個或多個存放資料的表組成。隻有一個表的為簡單資料庫,由多個相關的表組成的是關系資料庫。 2)資料庫系統(DBS) = 資料庫(DB) + 資料庫管理系統(DBMS) 3)ODBC主要包括ODBC驅動程式、ODBC管理器、ODBC API。 4)ODBC驅動程式:一種 動态連結庫 (DLL),DLL裡封裝了ODBC API,支援 ODBC 的應用程式(如 Excel)可以用它來通路 ODBC 資料源。每個 ODBC 驅動程式針對一個資料庫管理系統 (DBMS),如 SQL Server、Access 等。 5)資料源(Data Source): http://baike.baidu.com/view/286828.htm 在資料源中存儲了所有建立 “資料庫連接配接ODBC”的資訊。如果資料是水,資料庫就是水庫,資料源就是連接配接水庫的管道,終端使用者看到的資料集是管道裡流出來的水。 6)使用者操作資料庫的兩種方式: ①使用者 -> DBMS->資料庫 ②使用者 -> 應用程式 -> ADO -> ODBC -> OLE DB -> 資料源 -> 資料庫   三、做執行個體過程解決的問題   1、關于VC控件裡的group屬性: http://zhidao.baidu.com/question/89413374.html http://blog.csdn.net/fisher_jiang/archive/2006/05/30/762701.aspx http://topic.csdn.net/t/20030416/22/1670957.html ①先按Ctrl+D設定Tab順序,使同一類型且要在同一組裡的控件Tab順序号相連。 ②假設該組全為“radio button(單選按鈕)”,設定該組第一個控件屬性為group,并添加相關聯的成員變量,那麼第一個 radio button 控件的值将會是 0 ,接着會是 1 , 2 , 3… ,它會直到下一個标有 group 的相同控件為止。這樣可以更友善的進行程式設計。且在Class Wizard的 Member Variables -> Control IDs:欄裡隻會顯示第一個radio button的ID及相應變量。   2、建立表時遇到的錯誤: 1)RunTimeError是編譯時沒檢查出錯誤,到了程式運作期才出現的,這些錯誤隐藏度較高,要善用Debug手段,如F9(斷點),F5,F10等檢查。 2)SQL文法有誤編譯器是查不出的,如某個位置多了個逗号,SQL語句一定要好好檢查。 SQL文法線上查詢:http://www.w3school.com.cn/sql/sql_insert.asp 3)關鍵字不能做資料表的字段名,如password。 http://www.iecn.net/read-html-tid-13955.html   3、計算資料表的行數:SELECT COUNT()用法 http://www.cnblogs.com/tonygao/archive/2008/09/16/1291872.html   4、點選視窗上的“X”關閉視窗時調用WM_CLOSE、WM_DESTROY、WM_QUIT的過程: http://appdev.189works.com/?action-viewnews-itemid-2590 按下視窗上的“X”,馬上發出消息WM_CLOSE,WM_CLOSE響應函數OnClose()預設調用DestroyWindow(),DestroyWindow()又發送WM_DESTROY,WM_DESTROY響應函數OnDestroy()預設發送WM_QUIT,GetMessage()發現WM_QUIT,退出程式。(4個紅色的才是關鍵)   5、按下登陸對話框的“X”鍵或退出按鈕直接不建立學生資訊管理對話框。 1)一開始想先獲得 IDD_TEST_DIALOG 學生資訊管理對話框句柄,再發送WM_CLOSE消息給它,添加On_Close響應函數實作。相關函數有GetDlgItem()、GetSafeHwnd()、SendMessage()、PostQuitMessage(0)等。但這想法一開始就是錯的,因登陸對話框建立于學生資訊管理對話框之前,後者還沒建立又怎麼接收WM_CLOSE??還是設計思想最重要,搞了半天那4個函數發現無論如何獲得的指針句柄等都是NULL,才終覺不對勁。   2)用函數時一定要看清是全局函數還是類成員函數,還得注意是否在該類/其派生類的成員函數裡調用,有三種調用形式,每種形式對應的參數、傳回值都可能不同,假設 CWnd *p; CWnd wnd; //三種形式如下所示 ①p->SendMessage/wnd.SendMessage(…);  ②SendMessage(…); ③ ::SendMessage(…);   3)CDialog::OnOK()和CDialog::OnCancel()的差別:CDialog::OnOK()先調用Updatedata(TRUE)将資料傳給控件對應的成員變量,再調用CDialog::EndDialog()關閉對話框。 CDialog::OnCancel()直接調用CDialog::EndDialog()關閉對話框。   4)MFC下如何定義全局變量和全局函數:http://bbs.tcict.cn/frame.php?frameon=yes&referer=http%3A//bbs.tcict.cn/redirect.php%3Ffid%3D14%26tid%3D10772%26goto%3Dnextoldset   5、改變對話框控件的字型及顔色。 ①改變控件字型:http://kevinew.blog.sohu.com/39780007.html ②改變控件文本顔色/背景色:http://liangjun1800.blog.163.com/blog/static/3497059120090159223473/ ③想用“華文琥珀、行楷等字型”:http://www.cnblogs.com/cy163/archive/2006/11/25/572507.html ④ WM_CTLCOLOR 的消息響應 OnCtlColor 函數:http://baike.baidu.com/view/3798211.htm?fr=ala0_1