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

基于ADO的數據庫多欄動態組合顯示的設計與實現

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

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

關鍵詞:原生ADO對象;多欄動態組合顯示;GetRows方法;Delohi

引言

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

1 基于ADO的數據庫多欄動態組合顯示的設計方案

1.1 設計方案的總體介紹

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

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

1.2 Delphi中GetRows方法的編程原理

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

相關的參數說明如下:

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

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

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

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

1.3 動態組合顯示的實現

動態組合顯示是指用戶可以根據需要對數據表格字段進行任意的組合顯示,它的實現要點有以下三方面:

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

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

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

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

(3)StringGrid控件的相關屬性

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

ColCount:指定柵格的列數。

RowCount:指定柵格的行數。

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

1.4 主要源碼

2 應用實例

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

3 結束語

字段列表的多欄動態組合顯示具有較多的使用場合。應用本文提出的基于原生AD0對象的設計方案,不但具有系統開銷較少、編程簡單等優點,而且極容易擴展到c++Builder、vc、vB等開發環境中。

主站蜘蛛池模板: 国产97视频在线| 丁香亚洲综合五月天婷婷| 精品无码日韩国产不卡av| 亚洲精品无码不卡在线播放| 永久在线精品免费视频观看| 在线精品视频成人网| 91黄视频在线观看| 亚洲女同欧美在线| 国产精品网曝门免费视频| 熟女成人国产精品视频| 中文字幕在线一区二区在线| 日韩麻豆小视频| 国产91九色在线播放| 成人午夜精品一级毛片| 午夜视频免费一区二区在线看| 波多野结衣无码视频在线观看| 亚洲综合专区| 97人妻精品专区久久久久| 欧美视频免费一区二区三区| 国产呦视频免费视频在线观看| 国产爽歪歪免费视频在线观看| 国产日韩精品欧美一区喷| 国产精品区网红主播在线观看| 成人无码区免费视频网站蜜臀| 国产三级视频网站| 99热这里只有精品在线观看| 久久精品aⅴ无码中文字幕| 欧美日韩中文国产va另类| 激情综合婷婷丁香五月尤物| 亚洲男女在线| 日韩精品亚洲人旧成在线| 国产成+人+综合+亚洲欧美| 久久永久精品免费视频| 亚洲国产精品一区二区第一页免| 国产精品成| 波多野结衣无码AV在线| 最近最新中文字幕免费的一页| 91久久性奴调教国产免费| 98超碰在线观看| 亚洲三级a| 亚洲午夜国产精品无卡| 日韩东京热无码人妻| 伊人福利视频| 日韩免费毛片| 成人夜夜嗨| 国产视频一二三区| v天堂中文在线| 国产成人一区在线播放| 91青青视频| 91av成人日本不卡三区| 一级毛片免费播放视频| 无码电影在线观看| 亚洲成人网在线播放| 91在线播放免费不卡无毒| 亚洲av成人无码网站在线观看| 国产精品极品美女自在线网站| 免费观看无遮挡www的小视频| 宅男噜噜噜66国产在线观看| 毛片网站在线看| 亚洲天堂网2014| 老熟妇喷水一区二区三区| 国产精品30p| 亚洲视频二| 国产在线精品香蕉麻豆| 青青草一区| 色综合国产| 综合亚洲网| 午夜视频日本| 成人年鲁鲁在线观看视频| 久久99国产综合精品1| 最新国产在线| 97影院午夜在线观看视频| 久久综合AV免费观看| 狠狠色丁婷婷综合久久| 国产成人一区在线播放| 色婷婷视频在线| 国产精品美女免费视频大全| 亚洲国产精品成人久久综合影院| 精品伊人久久大香线蕉网站| 亚洲综合二区| 在线综合亚洲欧美网站| 青青草原国产一区二区|