999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ODBC的運行機制與編程

2008-12-31 00:00:00伊冀恒
網絡與信息 2008年7期

通過ODBC 管理器可以增添、修改或刪除數據源,也可以增添、刪除ODBC驅動程序,ODBC管理器把數據源和它們的連接信息保存在ODBC. INI、ODBCINST. INI和ODBCISAM.INI中。當需要共享應用程序時,只需按新的數據文件的類型和位置重新登錄即可。

1. ODBC應用程序接口

ODBC API是一組標準的ODBC函數庫,除了一般的數據庫操作函數外,還包括一組函數(如SQLExec或SQLEx- ecdlrect)能夠內嵌標準SQL查詢語句。SQL(StructuredQuery Language,結構化查詢語言)是一種存取關系型數據庫的標準語言,能夠定義、查詢、修改和控制數據,簡單的語句能夠作用于整個數據表格,具有很強的功能。API 函數按功能可分為以下幾類(順序也表示了進行數據庫操作的順序):

(1)數據源連接函數,設置/獲取有關信息的函數;

(2)準備/提交執行SQL查詢語句的函數和獲得數據的函數;

(3)終止函數和異常處理函數。

有兩個問題需要特別說明:一是數據類型問題,數據源中的數據所具有的數據類型稱為SQL數據類型,不一定和ODBCSQL數據類型存儲方式一致,驅動程序把這些數據類型同ODBCSQL數據類型進行相互轉換;二是函數的調用級別問題,并不是每一個ODBC驅動程序都支持所有的ODBC API函數調用。

2.ODBC應用編程

在Visual C++中,MFC(Microsoft Foundation Class)為ODBC預定義了幾個類,其中主要的是數據庫類和記錄集合類。CDatabase的每一個對象代表了一個數據源的連接,CRecordset的每一個對象代表了從一個數據表中按預定的查詢條件獲得的記錄的集合,一般說來,前者適宜于對數據源下的某個數據表格進行整體操作,后者用于對所選的記錄集合進行處理。

在應用編程時,一般使用CDatabase和CRecordset的派生類。假設派生類分別為CUserdb和CUserset,而在應用類CUserClass中,使用了一個CUserdb對象(m-db)和一個Cuserset對象。

2.1m-db連接數據源

m-db在完成定義構造后,要調用 CDatabase的打開(Open)函數以進行數據源的實際連接:

m-db.Open(lpszDSN,bExclusive,bReadOnly,lpsz-Connect)

打開函數需要輸入四個參數。lpszDSN:要連接的數據源的名字,如果 IpszDSN = NULL且 lpszConnect 中也沒有指明數據源名,則該調用會自動出現一個對話框列出所有可用的數據源(名),讓用戶選擇。bExclusive:只支持“假”(False)值,表示為共享(share)方式連接。ReadOnly:指明數據源操作方式是“只讀”還是可以修改。lpszConnect:指明連接字符串,包括數據源名、用戶標識碼、口令等信息。該字符串必須以“ODBC;”開頭,表示該連接是與一個ODBC數據源的連接(考慮以后版本支持非ODBC數據源)。

2.2m-db操作數據

數據源打開后,即可對數據庫文件中的數據表格進行操作,操作以調用SQL語句方式進行,可直接通過ODBC API函數,或者CDatabase類成員函數ExecuteSQL。數據表名在SQL 語句中指定,如下語句則在所在的數據源中的 clerk 表中插入一個記錄,記錄的name字段值為“chen”。

m-db.ExecuteSQL("insert into clerk (name) value('chent')")

2.3m-recset操作數據

記錄集合生成后,其當前記錄的各字段值被保存在前述的各字段變量中,如果調用CRecordset的滾動函數,如MoveFirst,MoveNext,MovePrev,MoveLast等,字段變量的值將自動跟隨“當前”記錄的位置的變化而變化。IsBOF,IsEOF用于判別是否移動到記錄的頭或尾。對于AddNew和Edit,修改字段變量后一定要調用函數Update,否則更新將丟失;而Delete操作則不必進行字段值修改和調用Update。在多用戶系統使用時,每一個數據源可以被多個用戶的多個任務連接,不同的任務可同時修改相同的數據源。ODBC 提供了兩種數據表更新的同步機制(在m-recset.Open函數中指定),“靜態”的和動態的。前者是一組靜態的記錄集合,當建立后不會改變,除了反映自己的添加/刪除外,不反映別的用戶的修改,除非調用了Requery重新建立。后者是一組動態的記錄集合,自己或別的用戶所作的修改隨時反映到集合中來(當然也可用Requery重建),以保持記錄與數據源的同步。

3.總結

從以上討論可以看出,ODBC應用接口十分簡便!再加上Visual C++ 中的AppWizard和ClassWizard自動生成框架代碼功能,連接一個數據源,生成一個CRecordset對象,就更快捷了。應用程序只需關心數據的處理而不必費心數據的存取,另外,另一個與ODBC有關的類CRecordView,是一個窗口類CWnd的派生類,建立在CRecordset上,可直接構造數據庫記錄顯示窗口,某些情況下也不妨一用。

主站蜘蛛池模板: 极品国产一区二区三区| 欧美午夜视频| 久久伊伊香蕉综合精品| 在线无码九区| 成人免费黄色小视频| 亚洲成人在线免费观看| 精品99在线观看| 无码高潮喷水专区久久| 国产麻豆91网在线看| 国产本道久久一区二区三区| aaa国产一级毛片| 色综合中文| 色婷婷天天综合在线| 亚洲国产成人麻豆精品| 1769国产精品视频免费观看| 一级黄色网站在线免费看| 91丝袜在线观看| 国产成人调教在线视频| 久久久久国产精品嫩草影院| 欧美不卡视频在线观看| 久久精品只有这里有| 国产一区二区三区精品久久呦| 国产人碰人摸人爱免费视频| 2022国产91精品久久久久久| 久久国产精品无码hdav| 黄色网站不卡无码| 精品久久久无码专区中文字幕| 亚洲国产天堂久久综合| 国产成人精品在线1区| 最新午夜男女福利片视频| 久久影院一区二区h| 久久久久久国产精品mv| 国产精品私拍在线爆乳| 亚洲妓女综合网995久久 | 婷婷亚洲视频| 亚洲综合精品香蕉久久网| h视频在线播放| 国产自在线播放| 色噜噜狠狠色综合网图区| 中文一区二区视频| 中文字幕欧美日韩高清| 东京热一区二区三区无码视频| 91国内在线视频| 成人国产精品网站在线看| 国产欧美日韩va| 在线不卡免费视频| 最新精品国偷自产在线| 高清视频一区| 欧美成人在线免费| 国产乱视频网站| 国产乱人免费视频| 日本久久久久久免费网络| 国产尤物视频在线| 国产乱子伦无码精品小说| 婷婷六月在线| 成人免费网站久久久| 国产毛片基地| 国产成人精品在线1区| 午夜精品影院| 日韩在线视频网站| 亚洲第一区欧美国产综合| 色综合久久久久8天国| 99久久国产精品无码| 国产另类视频| 欧美成人二区| 激情無極限的亚洲一区免费 | 久久99国产综合精品1| 一级成人欧美一区在线观看| 美女潮喷出白浆在线观看视频| 国产精品人成在线播放| 中文字幕永久在线观看| 一级福利视频| 国产在线视频二区| 国产美女自慰在线观看| 伊人无码视屏| 国产高清在线观看| 激情视频综合网| 广东一级毛片| 婷婷色中文| 久久精品无码中文字幕| 72种姿势欧美久久久大黄蕉| 宅男噜噜噜66国产在线观看|