當前各種主流資料庫有很多,包括oracle, ms sql server, sybase, informix, mysql, db2, interbase / firebird, postgresql, sqlite, sap/db, timesten, ms access等等。資料庫程式設計是對資料庫的建立、讀寫等一列的操作。資料庫程式設計分為資料庫客戶端程式設計與資料庫伺服器端程式設計。
資料庫客戶端程式設計主要使用odbc api、ado、等方法;資料庫服務端程式設計主要使用ole db等方法。資料庫程式設計需要掌握一些訪問資料庫技術方法,還需要注意怎麼設計高效的資料庫、資料庫管理與執行的優化、資料庫語句的優化。
一、訪問資料庫技術方法
資料庫程式設計分為資料庫客戶端程式設計與資料庫伺服器端程式設計。資料庫客戶端程式設計主要使用odbc api、ado、等方法;資料庫服務端程式設計主要使用ole db等方法。
1、幾種是資料庫訪問方法比較
odbc api是一種適合資料庫底層開發的程式設計方法,odbc api提供大量對資料來源的操作,odbc api能夠靈活地操作游標,支援各種幫定選項,在所有odbc相關程式設計中,api程式設計具有最高的執行速度。
dao提供了很好的資料庫程式設計的物件模型.但是,對資料庫的所有呼叫以及輸出的資料都必須通過access/jet資料庫引擎,這對於使用資料庫應用程式,是嚴重的瓶頸。
ole db提供了com介面,與傳統的資料庫介面相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關係資料來源進行通訊。
ado最主要的優點在於易於使用、速度快、記憶體支出少和磁碟遺跡小。
是利用資料集的概念將資料庫資料讀入記憶體中,然後在記憶體中對資料進行操作,最後將資料集資料回寫到源資料庫中。
otl 是 oracle, odbc and db2-cli template library 的縮寫,是乙個c++編譯中操控關聯式資料庫的模板庫, otl中直接操作oracle主要是通過oracle提供的oci介面進行,進行操作db2資料庫則是通過cli介面來進行,至於ms的資料庫和其它一些資料庫,則otl只提供了odbc來操作的方式。當然oracle和db2也可以由otl間接使用odbc的方式來進行操縱。具有以下優點:
跨平台;執行效率高,與c語言直接呼叫api相當;開發效率高,起碼比使用起來更簡單,更簡潔;部署容易,不需要ado元件,不需要.net framework 等。
2、vc資料庫程式設計幾種方法
vc資料庫程式設計幾種方法,包括odbc連線、mfc odbc連線、dao連線、ole db、ole db templates連線、ado、oracle專用方法(oci(oracle call inte***ce)訪問、oracle object ole c++ class library )。
<1.>通用方法
1. odbc連線
odbc(open database connectivity)是msoa的一部分,是乙個標準資料庫介面。它提供對關聯式資料庫訪問的統一介面,實現對異構資料來源的一致訪問。
odbc資料訪問由以下部分組成:
<1>控制代碼(handles):odbc使用控制代碼來標識odbc環境、連線、語句和描述器.
<2>快取區(buffers):
<3>資料型別(data types)
<4>一致性級別(conformance levels)
用odbc設計客戶端的一般步驟:
<1>分配odbc環境
<2>分配連線控制代碼
<3>連線資料來源
<4>構造和執行sql語句
<5>獲得查詢結果
<6>斷開資料來源的連線
<7>釋放odbc環境
odbc api是一種適合資料庫底層開發的程式設計方法,odbc api提供大量對資料來源的操作,odbc api能夠靈活地操作游標,支援各種幫定選項,在所有odbc相關程式設計中,api程式設計具有最高的執行速度.因此,odbc api程式設計屬於底層程式設計。
2. mfc odbc連線
mfc odbc是mfc對odbc進行的封裝,以簡化對odbc api的呼叫,從而實現物件導向的資料庫程式設計介面.
mfc odbc的封裝主要開發了cdatabase類和crecordset類
(1) cdatabase類
cdatabase類用於應用程式建立同資料來源的連線。cdatabase類中包含乙個m_hdbc變數,它代表了資料來源的連線控制代碼。如果要建立cdatabase類的例項,應先呼叫該類的建構函式,再呼叫open函式,通過呼叫,初始化環境變數,並執行與資料來源的連線。
在通過close函式關閉資料來源。
cdatabase類提供了對資料庫進行操作的函式及事務操作。
(2) crecordset類
crecordset類定義了從資料庫接收或者傳送資料到資料庫的成員變數,以實現對資料集的資料操作。
crecordset類的成員變數m_hstmt代表了定義該記錄集的sql語句控制代碼,m_nfields為記錄集中欄位的個數,m_nparams為記錄集所使用的引數個數。
crecordset的記錄集通過cdatabase例項的指標實現同資料來源的連線,即crecordset的成員變數m_pdatabase.
mfc odbc程式設計更適合於介面型資料庫應用程式的開發,但由於cdatabase類和crecordset類提供的資料庫操作函式有限,支援的游標型別也有限,限制了高效的資料庫開發。在程式設計層次上屬於高階程式設計。
應用例項:
1.開啟資料庫
cdatabase database;
database.openex( _t( "dsn=zhuxue" ),cdatabase::noodbcdialog);//zhuxue為資料來源名稱
2.關聯記錄集
crecordset recset(&database);
3.查詢記錄
cstring ssql1="";
ssql1 = "select * from tablename" ;
recset.open(crecordset::forwardonly, ssql1, crecordset::readonly);
int ti=0;
cdbvariant var;//var可以轉換為其他型別的值
while (!recset.iseof())
recset.close();//關閉記錄集
4.執行sql語句
cstring ssql="";
ssql+="delete * from 院系審核";//清空表
database.executesql(ssql);
ssql也可以為insert ,update等語句
5.讀取欄位名
ssql = "select * from sheet1" ; //讀取的檔案有sheet1表的定義,或為本程式生成的表.
// 執行查詢語句
recset.open(crecordset::forwardonly, ssql, crecordset::readonly);
int excelcolcount=recset.getodbcfieldcount();//列數
cstring excelfield[30];
//得到記錄集的字段集合中的字段的總個數
for( i=0;i }
6.開啟excel檔案
cstring sdriver = "microsoft excel driver (*.xls)"; // excel安裝驅動
cstring ssql,***celfile; //***celfile為excel的檔案路徑
try;dsn='';firstrowhasnames=1;readonly=false;create_db=/"%s/";dbq=%s",sdriver, ***celfile, ***celfile);
// 建立資料庫 (既excel**檔案)
if( database.openex(ssql,cdatabase::noodbcdialog) ) }
catch(e)
3. dao連線
dao(data access object)是一組microsoft access/jet資料庫引擎的com自動化介面.dao直接與access/jet資料庫通訊.通過jet資料庫引擎,dao也可以同其他資料庫進行通訊。
dao還封裝了access資料庫的結構單元,通過dao可以直接修改access資料庫的結構,而不必使用sql的資料定義語言(ddl)。
dao的體系結構如下:
dao封裝的類:
(1)cdaoworkspace:對dao工作區(資料庫處理事務管理器)的封裝
(2)cdaodatabase:對dao資料庫物件的封裝,負責資料庫連線.
(3)cdaorecordset:對dao記錄集物件的封裝,代表所選的一組記錄.
(4)cdaotabledef:對錶定義物件的封裝,代表基本表或附加表定義.
(5)cdaoquerydef:對查詢物件的封裝,包含所有查詢的定義.
(6)cdaoexception:dao用於接收資料庫操作異常的類.
(7)cdaofieldexchange
dao提供了很好的資料庫程式設計的物件模型.但是,對資料庫的所有呼叫以及輸出的資料都必須通過access/jet資料庫引擎,這對於使用資料庫應用程式,是嚴重的瓶頸。
dao相對於odbc來說,屬於高層的資料庫介面.
4. ole db連線
ole db對odbc進行了兩方面的擴充套件:一是提供了資料庫程式設計的ole介面即com,二是提供了乙個可用於關係型和非關係型資料來源的介面。
ole db提供了com介面,與傳統的資料庫介面相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關係資料來源進行通訊。
與odbc api一樣,ole db也屬於底層的資料庫程式設計介面,ole db結合了odbc對關聯式資料庫的操作功能,並進行擴充套件,可以訪問非關聯式資料庫。
ole db訪問資料庫的原理如下:
ole db程式結構:
ole db由客戶(consumer)和伺服器(provider)。客戶是使用資料的應用程式,它通過ole db介面對資料提供者的資料進行訪問和控制。ole db伺服器是提供ole db介面的軟體元件。
根據提供的內容可以分為資料提供程式(data provider)和服務提供程式(service provider)。
程式結構原理圖如下:
<1>資料提供程式
資料提供程式擁有自己的資料並把資料以**的形式呈現給使用者使用.
<2>服務提供程式
服務提供程式是資料提供程式和使用者的結合。它是ole db體系結構中的中介軟體,它是ole db資料來源的使用者和資料使用程式的提供者
<3>資料使用程式
資料使用程式對儲存在資料提供程式中的資料進行使用和控制.
ole db開發程式的一般步驟:
<1>初始化com環境
<2>連線資料來源
<3>開啟對話
<4>執行命令
<5>處理結果
<6>清除物件
C資料庫程式設計 自學總結
c 網路程式設計自學總結 sqlconnection conn new sqlconnection 2 c 巢狀的mysql的鏈結 string constring database 資料庫名 kftv data source 伺服器位址 user id root password 密碼 pooli...
資料庫管理與程式設計
3.資料庫設計階段。要求設計概念結構e r圖,然後將其轉換成表結構,並根據分析形成過程 函式等設計,並驗收此階段的成果,要求每個小組講解其階段成果。2天 4.資料庫實現階段。根據資料庫設計結果以及功能實現的需求,在sql server中進行具體實現,完成表 檢視 儲存過程和函式等物件的實現,在sql...
ACCESS資料庫與程式設計複習
1 資料庫系統的組成,核心 資料庫系統由資料庫 db 資料庫管理系統 及其開發工具 資料庫應用系統和資料庫管理員構成。核心是 資料庫管理系統 2 資料管理的發展經歷了哪幾個階段,各自階段的特點 1 人工管理階段 資料不儲存 應用程式管理資料 資料不共享,資料冗餘量大 資料不具有獨立性 2 檔案系統階...