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

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

2007-04-29 00:00:00黃雄波徐小增岳喜順
計算機時代 2007年9期

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

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

引言

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

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

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

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

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

1.2 Delphi中GetRows方法的編程原理

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

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

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

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

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

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

1.3 動態(tài)組合顯示的實現(xiàn)

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

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

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

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

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

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

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

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

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

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

1.4 主要源碼

2 應(yīng)用實例

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

3 結(jié)束語

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

主站蜘蛛池模板: 国产美女在线观看| 呦女亚洲一区精品| 91福利国产成人精品导航| 动漫精品啪啪一区二区三区| 欧美国产成人在线| 国产色伊人| 欧美色伊人| 无码精品国产dvd在线观看9久| 日本午夜在线视频| 久久精品国产精品一区二区| 日本AⅤ精品一区二区三区日| 在线国产毛片| 亚洲欧美极品| 国产精品久久自在自线观看| 国产精品视频白浆免费视频| 午夜视频日本| 无码国内精品人妻少妇蜜桃视频| 国产青青草视频| 国产精品美女免费视频大全 | 国模粉嫩小泬视频在线观看| 91精品国产福利| 欧美无遮挡国产欧美另类| 高清久久精品亚洲日韩Av| 亚洲视频无码| 99视频全部免费| 99精品高清在线播放| 日本一区中文字幕最新在线| 国产精品深爱在线| 人妻21p大胆| 国产小视频a在线观看| 欧美亚洲一二三区| 国产福利一区二区在线观看| 精品国产黑色丝袜高跟鞋| 亚洲最新网址| 久久精品人妻中文视频| 老司机午夜精品视频你懂的| 热re99久久精品国99热| 国产精品亚欧美一区二区三区| 免费又黄又爽又猛大片午夜| 亚洲开心婷婷中文字幕| 国产人成乱码视频免费观看| 国产情精品嫩草影院88av| 无码一区二区波多野结衣播放搜索| 天堂av综合网| 国内精品免费| 丰满人妻被猛烈进入无码| 四虎综合网| 国产精品开放后亚洲| 天天综合网色| 一级毛片无毒不卡直接观看| 国产精品成| 不卡无码h在线观看| 久久96热在精品国产高清 | 国产精品丝袜在线| 亚洲人成网18禁| 狂欢视频在线观看不卡| 亚洲二区视频| 激情無極限的亚洲一区免费| 国产成人午夜福利免费无码r| 国产另类视频| 全色黄大色大片免费久久老太| 亚洲精品久综合蜜| 丁香六月激情综合| 手机在线看片不卡中文字幕| 色婷婷成人| 韩国福利一区| 亚洲另类国产欧美一区二区| 国产亚洲视频在线观看| 亚洲无码高清一区| 小说区 亚洲 自拍 另类| 亚洲精品无码高潮喷水A| 国产欧美日韩18| 视频在线观看一区二区| 一区二区无码在线视频| 久久性视频| 国产一区二区三区精品久久呦| 国产日韩欧美黄色片免费观看| 呦女亚洲一区精品| 国产91视频免费观看| 欧美综合激情| 中文无码精品a∨在线观看| 欧美在线导航|