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等開發環境中。

主站蜘蛛池模板: 日本91视频| 欧美综合在线观看| 国产女人在线观看| 亚洲高清免费在线观看| 色AV色 综合网站| 久久精品无码中文字幕| 免费99精品国产自在现线| 亚洲人成日本在线观看| 青青久在线视频免费观看| 久久成人免费| AⅤ色综合久久天堂AV色综合| 国产乱人伦精品一区二区| 亚洲永久色| 欧美午夜视频在线| 久久久久亚洲AV成人人电影软件| 欧美日韩精品综合在线一区| 视频一本大道香蕉久在线播放| 日本免费a视频| 99热在线只有精品| av手机版在线播放| 看国产一级毛片| 又爽又大又黄a级毛片在线视频 | 日本人又色又爽的视频| 狠狠干综合| 欧亚日韩Av| 欧美午夜在线观看| 亚洲永久免费网站| 91亚洲精选| 久久中文无码精品| 亚洲爱婷婷色69堂| 亚洲欧美不卡视频| 丰满人妻久久中文字幕| a毛片免费观看| 丰满的少妇人妻无码区| 国模在线视频一区二区三区| 在线观看国产精品第一区免费| 免费高清a毛片| 婷婷丁香色| 亚洲成人免费看| 91综合色区亚洲熟妇p| 亚洲AV电影不卡在线观看| 粗大猛烈进出高潮视频无码| 91精品国产丝袜| 无码免费的亚洲视频| 亚洲免费福利视频| 国产精品99一区不卡| 亚洲精品日产精品乱码不卡| 亚洲区视频在线观看| www精品久久| 久久免费观看视频| 欧美另类第一页| 国产精品国产三级国产专业不| 欧美一道本| 亚洲天堂久久| 制服丝袜一区| 国产成人在线无码免费视频| 亚洲综合激情另类专区| 日韩欧美国产精品| 欧美成人亚洲综合精品欧美激情 | 国产靠逼视频| 久久国产av麻豆| 国产色伊人| 国产自产视频一区二区三区| 亚洲bt欧美bt精品| 欧美成人午夜影院| 国产精品女人呻吟在线观看| 国产丝袜第一页| 亚洲人免费视频| 女人爽到高潮免费视频大全| 欧美黑人欧美精品刺激| 婷婷综合色| 欧美精品一区在线看| 成年人免费国产视频| 国产综合精品一区二区| 青青网在线国产| 露脸真实国语乱在线观看| 毛片在线看网站| 日本成人一区| 欧洲日本亚洲中文字幕| 天天操精品| 九九热这里只有国产精品| 亚洲欧美激情小说另类|