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

        ?

        基于ADO的數(shù)據(jù)庫(kù)多欄動(dòng)態(tài)組合顯示的設(shè)計(jì)與實(shí)現(xiàn)

        2007-04-29 00:00:00黃雄波徐小增岳喜順
        計(jì)算機(jī)時(shí)代 2007年9期

        摘要:為了更直觀形象地顯示SQL返回的多行少列查詢數(shù)據(jù),提出了一種基于原生ADO對(duì)象的數(shù)據(jù)庫(kù)多欄動(dòng)態(tài)組合顯示的設(shè)計(jì)方案,并在Delphi編程環(huán)境中討論了其實(shí)現(xiàn)過程。與現(xiàn)有的設(shè)計(jì)方案相比,新方案在系統(tǒng)開銷及執(zhí)行效率方面均有了顯著的改進(jìn)。

        關(guān)鍵詞:原生ADO對(duì)象;多欄動(dòng)態(tài)組合顯示;GetRows方法;Delohi

        引言

        在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開發(fā)中,經(jīng)常會(huì)遇到SQL查詢數(shù)據(jù)返回字段數(shù)較少但記錄數(shù)較多(即多行少列)的情況。為了方便用戶查看數(shù)據(jù),文獻(xiàn)在Oracle DBMS中利用SQL結(jié)構(gòu)化查詢語言初步實(shí)現(xiàn)了數(shù)據(jù)的分欄顯示。進(jìn)一步,為了提高可移植性和簡(jiǎn)化編程模型,文獻(xiàn)利用Microsoft OWC組件實(shí)現(xiàn)了字段列表的多欄動(dòng)態(tài)組合顯示,但由于使用了第三方組件,故文獻(xiàn)所介紹的方法在系統(tǒng)開銷及執(zhí)行效率等方面均有顯著的不足。本文通過對(duì)相關(guān)原生ADO對(duì)象進(jìn)行深入的分析后,提出了一種新的數(shù)據(jù)庫(kù)多欄動(dòng)態(tài)組合顯示的設(shè)計(jì)方案,并在Delphi編程環(huán)境中討論了其實(shí)現(xiàn)過程。

        1 基于ADO的數(shù)據(jù)庫(kù)多欄動(dòng)態(tài)組合顯示的設(shè)計(jì)方案

        1.1 設(shè)計(jì)方案的總體介紹

        ADO是Microsoft公司目前主要的數(shù)據(jù)存取技術(shù),它成功地封裝了OLE-DB大部分的功能,讓應(yīng)用程序能夠很方便地處理各種不同類型的數(shù)據(jù)。ADO由一組COM對(duì)象組成(簡(jiǎn)稱為原生ADO對(duì)象),程序員通過這些原生ADO對(duì)象可以輕松地連接數(shù)據(jù)源、存取數(shù)據(jù)和處理數(shù)據(jù)。通過對(duì)相關(guān)原生ADO對(duì)象進(jìn)行仔細(xì)的分析后,我們從GetRows方法中找到了一種新的字段列表的多欄動(dòng)態(tài)組合顯示的設(shè)計(jì)方案。

        GetRows是RecordSet對(duì)象的一個(gè)方法,它的功能是將數(shù)據(jù)集的多個(gè)記錄的某些列數(shù)據(jù)檢索到一個(gè)二維數(shù)組中,并支持記錄的書簽標(biāo)記操作。顯然,在數(shù)據(jù)分欄的欄數(shù)以及SQL多行少列查洵數(shù)據(jù)的記錄總數(shù)確定后,便可在一個(gè)循環(huán)語句中通過GetRows方法和記錄指針的移動(dòng)來分批檢索數(shù)據(jù)(這里,循環(huán)次數(shù)為:記錄總數(shù)/分欄的欄數(shù),若相除的結(jié)果不為整數(shù),則作取整后加1的處理;GetRows方法每次檢索記錄的條數(shù)為分欄的欄數(shù)),并把每次檢索所得的二維數(shù)據(jù)從左至右地顯示在一個(gè)StringGrid控件中,從而實(shí)現(xiàn)字段列表的多欄動(dòng)態(tài)組合顯示。設(shè)計(jì)方案的整個(gè)處理流程如圖1所示。

        1.2 Delphi中GetRows方法的編程原理

        Delphi的ADO組件封裝了原生ADO-對(duì)象的大部分方法,并且提供了和Delphi原有的數(shù)據(jù)感知組件連接的能力,一般情況下使用這些組件便可快速高效地編寫基于ADO技術(shù)的應(yīng)用系統(tǒng)。對(duì)于Delphi ADO組件沒有封裝的方法,則需要通過這些ADO組件提供的某些屬性進(jìn)行對(duì)應(yīng)的引用,如上述的GetRows方法并沒有封裝在Delphi ADO組件中,但程序員可通過TADODataSet組件的Recordset屬性來完成對(duì)GetRows方法的引用。

        相關(guān)的參數(shù)說明如下:

        (1)ArrayResult:是—個(gè)OLEVariant類型的自定義變量,用來保存GetRows方法的檢索返回?cái)?shù)據(jù)。該變量是一個(gè)二維數(shù)組,第一個(gè)下標(biāo)標(biāo)識(shí)字段,第二個(gè)下標(biāo)標(biāo)識(shí)記錄編號(hào)。

        (2)Rows:用來指定要檢索的記錄條數(shù),該參數(shù)的值若設(shè)置為—1,則表示從當(dāng)前記錄指針開始檢索數(shù)據(jù)集的剩余記錄。

        (3)Start:用來指定檢索記錄的首位置(書簽),該參數(shù)有0、1和2三種可選值,分別表示GetRows方法的檢索從當(dāng)前記錄開始、從第一個(gè)記錄開始和從最后一個(gè)記錄開始。

        (4)Fields:用來指定要檢索記錄的字段名或序號(hào),當(dāng)需要檢索兩個(gè)或以上字段時(shí)該參數(shù)應(yīng)傳入OLEVariant類型的數(shù)組變量。

        1.3 動(dòng)態(tài)組合顯示的實(shí)現(xiàn)

        動(dòng)態(tài)組合顯示是指用戶可以根據(jù)需要對(duì)數(shù)據(jù)表格字段進(jìn)行任意的組合顯示,它的實(shí)現(xiàn)要點(diǎn)有以下三方面:

        (1)構(gòu)造SQL查詢語句的字段選擇列表

        由于動(dòng)態(tài)組合顯示的字段個(gè)數(shù)及名稱是用戶在軟件運(yùn)行時(shí)任意組合的,且SQL查詢語句中選擇列表的兩個(gè)字段之間要求用逗號(hào)隔開,故在構(gòu)造SQL查詢語句的字段選擇列表時(shí),用一個(gè)字符串變量以“<字段名稱>”的方式來連接用戶任意組合的字段列表。顯然,該字符串變量的首字段開始處也帶有“,”分隔符,為了符合SQL語句的格式要求,應(yīng)該用Delerte函數(shù)刪除。Delete函數(shù)的格式是:Delete(str,m,n),功能是把字符串str從m位開始,刪除n位。

        (2)確定GetRows方法的Fields參數(shù)

        從上述分析可知,動(dòng)態(tài)組合的顯示字段在運(yùn)行時(shí)由用戶確定,故GetRows方法的Fields參數(shù)應(yīng)由一個(gè)OLEVariant類型的動(dòng)態(tài)數(shù)組變量來傳遞,該動(dòng)態(tài)數(shù)組的長(zhǎng)度可用SetLength函數(shù)在軟件運(yùn)行時(shí)動(dòng)態(tài)設(shè)定。

        (3)StringGrid控件的相關(guān)屬性

        StringGrid控件是一種通用的柵格,用于在行和列中顯示各種數(shù)據(jù)。這里并沒有使用DBGrid數(shù)據(jù)庫(kù)感應(yīng)控件來顯示數(shù)據(jù),主要原因是StringGrid控件在編程過程中更富有靈活性。StringGfid控件的相關(guān)屬性有:

        ColCount:指定柵格的列數(shù)。

        RowCount:指定柵格的行數(shù)。

        Cells[ACol,ARow]:該屬性是一個(gè)二維數(shù)組,用戶通過它可以存取特定的行和列上的數(shù)據(jù)。其中ACol是列的序號(hào),ARow是行的序號(hào),序號(hào)都是從0開始。

        1.4 主要源碼

        2 應(yīng)用實(shí)例

        圖2是運(yùn)用上述技術(shù)設(shè)計(jì)的多欄動(dòng)態(tài)組合顯示系統(tǒng)的程序界面。系統(tǒng)中數(shù)據(jù)表的字段結(jié)構(gòu)是:(編號(hào)、姓名、電話、出生年月、薪水),其中帶下畫線的字段為主鍵。用戶可以根據(jù)實(shí)際情況自由地組合需要顯示的數(shù)據(jù)字段和設(shè)定合適的欄數(shù)。

        3 結(jié)束語

        字段列表的多欄動(dòng)態(tài)組合顯示具有較多的使用場(chǎng)合。應(yīng)用本文提出的基于原生AD0對(duì)象的設(shè)計(jì)方案,不但具有系統(tǒng)開銷較少、編程簡(jiǎn)單等優(yōu)點(diǎn),而且極容易擴(kuò)展到c++Builder、vc、vB等開發(fā)環(huán)境中。

        免费xxx在线观看| 午夜国产精品视频在线观看| 欧美男生射精高潮视频网站| 国产无人区码一码二码三mba| 国产日韩欧美网站| 精品免费看国产一区二区白浆| 91九色熟女潮喷露脸合集| 无码人妻丰满熟妇区bbbbxxxx| 成熟人妻av无码专区| 青春草在线视频精品| 久久精品视频日本免费| 久久午夜福利无码1000合集 | 久久婷婷综合色拍亚洲| 国产999精品久久久久久| 欧洲一区在线观看| 在线观看国产自拍视频| 日本边添边摸边做边爱喷水| 午夜不卡久久精品无码免费| 白白色免费视频一区二区| 久久黄色精品内射胖女人| 无套中出丰满人妻无码| 国产亚洲av人片在线观看| 2021最新久久久视精品爱| 日本系列有码字幕中文字幕| 大屁股人妻女教师撅着屁股| 国产精品深田咏美一区二区| 亚洲日本视频一区二区三区| 亚洲一区二区三区蜜桃| 国产精品久久久久久亚洲av| 乱人伦视频69| 色男色女午夜福利影院| 无码国产精品久久一区免费| 男女超爽视频免费播放| 扒下语文老师的丝袜美腿| 国产熟女盗摄一区二区警花91 | 国产肉丝袜在线观看| 国产又爽又黄又不遮挡视频| 久久这黄色精品免费久| 好吊妞视频这里有精品| 久久人人爽人人爽人人片av麻烦| 国产激情久久久久久熟女老人|