亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ODBC的運行機制與編程

        2008-12-31 00:00:00伊冀恒
        網(wǎng)絡(luò)與信息 2008年7期

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

        1. ODBC應(yīng)用程序接口

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

        (1)數(shù)據(jù)源連接函數(shù),設(shè)置/獲取有關(guān)信息的函數(shù);

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

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

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

        2.ODBC應(yīng)用編程

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

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

        2.1m-db連接數(shù)據(jù)源

        m-db在完成定義構(gòu)造后,要調(diào)用 CDatabase的打開(Open)函數(shù)以進行數(shù)據(jù)源的實際連接:

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

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

        2.2m-db操作數(shù)據(jù)

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

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

        2.3m-recset操作數(shù)據(jù)

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

        3.總結(jié)

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

        日产精品久久久一区二区| 一本大道加勒比东京热| 久久午夜av一区二区| 国产成a人亚洲精品无码樱花| 欧洲人妻丰满av无码久久不卡| 欧美日韩一区二区三区色综合| 男的和女的打扑克的视频| 亚洲精品在线国产精品| 麻豆久久久9性大片| 无码中文日韩Av| 国产精品二区三区在线观看| 亚洲免费观看视频| 国产97在线 | 中文| 日韩欧美国产亚洲中文| 少妇呻吟一区二区三区| 色综合久久网| 好大好深好猛好爽视频免费| 精品午夜一区二区三区久久 | 日韩精品久久久一区| 色综久久综合桃花网国产精品| 亚洲国产成人久久综合碰碰| 少妇饥渴偷公乱a级无码| 亚洲人妻无缓冲av不卡| 国产成人一区二区三区| 麻花传媒68xxx在线观看| 久久av无码精品人妻出轨| 成激情人妻视频| 亚洲国产成人久久精品一区| 久久精品国产亚洲av电影网| 97超在线视频免费| 亚洲一区二区三区资源| 真实的国产乱xxxx在线| 乱码午夜-极品国产内射 | 亚洲自拍另类制服在线| 一区二区三区熟妇人妻18| 精品久久有码中文字幕| 精品人妻人人做人人爽| 久久99精品这里精品动漫6| 风韵人妻丰满熟妇老熟| 久久精品国产色蜜蜜麻豆| 99精品热6080yy久久|