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)境中。

主站蜘蛛池模板: 久久久受www免费人成| 成人午夜视频免费看欧美| 久久性妇女精品免费| 日韩精品一区二区深田咏美| 国产又色又刺激高潮免费看| 香蕉综合在线视频91| 综合五月天网| 国产美女91视频| 青青国产成人免费精品视频| 亚洲最大看欧美片网站地址| 97国产在线视频| 青青操国产| 免费大黄网站在线观看| 久久亚洲国产最新网站| 国产精品分类视频分类一区| 亚洲欧洲综合| 一区二区三区高清视频国产女人| 五月天丁香婷婷综合久久| 999国产精品| 国产成人高清亚洲一区久久| 伊人色在线视频| 99在线视频免费| 免费一级毛片在线播放傲雪网| 亚洲精品在线影院| 免费在线看黄网址| 蝴蝶伊人久久中文娱乐网| 亚洲欧美另类专区| 精品久久国产综合精麻豆| 久热99这里只有精品视频6| 国产精品成人一区二区| 99热这里都是国产精品| 久久无码高潮喷水| A级毛片无码久久精品免费| 538精品在线观看| 成人在线不卡| 亚洲国产综合精品中文第一| 国产午夜一级毛片| 久久综合久久鬼| 日韩人妻无码制服丝袜视频| 免费午夜无码18禁无码影院| 美女啪啪无遮挡| 试看120秒男女啪啪免费| 久久 午夜福利 张柏芝| 中文无码精品A∨在线观看不卡| 重口调教一区二区视频| 国产成人1024精品下载| YW尤物AV无码国产在线观看| 国产精品美女在线| 国产精品香蕉在线| 久久性视频| 亚洲成在线观看 | 国产精品jizz在线观看软件| 六月婷婷激情综合| 亚洲最大福利视频网| 高清国产在线| 色播五月婷婷| 一边摸一边做爽的视频17国产| 香蕉久人久人青草青草| 国产91av在线| 高潮爽到爆的喷水女主播视频| 久久精品亚洲热综合一区二区| 日韩免费中文字幕| 91人妻日韩人妻无码专区精品| 五月激情综合网| 欧美日韩亚洲国产| 国产人人射| 国产欧美视频在线| 亚洲人成电影在线播放| 露脸真实国语乱在线观看| 在线观看免费国产| 午夜无码一区二区三区| 国产日韩精品欧美一区喷| 夜夜高潮夜夜爽国产伦精品| 58av国产精品| 在线综合亚洲欧美网站| 国产精品美女自慰喷水| 伊人久热这里只有精品视频99| 青青久视频| 精品视频一区在线观看| 日韩小视频在线播放| 亚洲日本中文综合在线| 毛片最新网址|