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

談數據庫應用中的查詢技術分析

2008-04-12 00:00:00張秀剛
中國新技術新產品 2008年22期

摘要:當今數據庫技術已成為計算機應用的核心技術,可以認為當今任何計算機信息系統和計算機應用系統都與數據庫的應用分不開,數據庫已成為其核心和基礎。建立數據庫應用系統是要充分利用數據庫中的數據。對數據庫中的數據進行的操作除增加(Insert)、更改(update)和刪除(delete)外,最常用,也是重要的是查詢操作。即便是最簡單的數據庫應用系統,也離不開查詢功能,查詢可以說是進行數據管理的重要手段,不過也是數據庫應用系統開發過程中較困難、花時間、有一定難度的部分。

關鍵詞:計算機;信息;查詢

1 綜合信息的查詢

目前,隨著工具軟件的發展和廣泛采用,使數據庫應用系統的開發如虎添翼,其中PowerBuilder以其獨特的數據窗口(DataWindow)倍受歡迎。

PowerBuider是美國著名的數據庫應用開發工具生產廠家Powersoft公司于1991年6月推出的功能強大、性能優異的開發工具,它是一種面向對象的、具有可視圖形界面的、快速的交互開發工具。智能化的數據窗口對象是其精華所在。利用此對象可以操作關系數據庫的數據而無需寫入SQL語句,即可以直接檢索、更新和用多種形式表現數據源中的數據。但要注意,必須使數據窗口成為窗口(Window)下數據窗口控制的一個連接對象,數據窗口才能使用戶在應用執行期間訪問數據庫中的數據。

利用PowerBuilder提供的內部查詢機制,我們即可以讓數據窗口作為查詢條件的輸入,又可以讓該數據窗口作為查詢結果的輸出,這樣就可以使數據窗口中的所有數據項進行自由組合的查詢。例如:在窗口W_que上建立兩個數據窗口控制dw_1和dw_2,分別連接兩個數據窗口對象dw_que1與dw_que2,其中dw_1用于輸入查詢條件,而dw_2用于顯示滿足查詢條件的所有元組。事實上條件的輸入及元組的顯示完全可以在一個數據窗口中實現,考慮到這兩種操作的差別(例:條件輸入可編輯,而元組顯示不可編輯;條件輸入可為某一范圍,而元組顯示僅為滿足條件的所有紀錄……)將其用兩個數據窗口控制來實現。這就要求dw_2與dw_1數據共享,即要求dw_que1與dw_que2兩數據窗口的數據源完全相同。

用這種方法實現查詢優點突出,例:通過設置數據窗口中對應列的編輯風格(Edit Styles)為相應的下拉式數據窗口(DropDownDataWindow),使顯示的元組文字化。注意,這要事先建好下拉式數據窗口。設置數據窗口中對應列的編輯風格同樣可滿足其它顯示需要。利用數據窗口的風格特點:查詢表的列寬、列序可自由改變,甚至可以覆蓋掉一些列,以達到更滿足查詢顯示的需要。綜合查詢的信息來自多個表,改變數據窗口的數據源,采用多表連接的數據源即可實現。但是如我們問題的描述,如果我們需要的查詢項隨機地來自這43張表中的數據項,顯示項也是隨機地。這種任意條件的組合,可選輸出項的顯示稱為動態查詢(Dynamic Query)依然采用上述方法,數據窗口dw_que1與dw_que2的數據源將是這43張表的連接,先不說效率問題,單從這426個項中輸入查詢條件,又顯示這426個項,就使人敬而遠之。因為,在每一次查詢前,都不了解此次查詢的要求是什么,這樣,每張表中的每一個數據項都缺一不可;另一方面,每一次的查詢,一旦查詢條件確定、顯示條目也確定后,我們會發現,每一次有意義的查詢并不是需要全部的43張表,換言之,每一次查詢沒有必要將43張表全部連結,而應只連接那些被選中數據項所在的表,即數據源是動態產生的。由于數據源不確定,數據窗口就無法設計,動態查詢無法用這種方法實現。

2計算機動態查詢的實現

在某些實際的應用系統開發中,由于用戶在開發前提不出查詢的需求,而在系統運行中希望能夠對所有的數據項任意組合進行查詢,以滿足來自多方的需求,實現動態地查詢(即隨機地從43張表中選擇數據項進行組合作為查詢條件并任意地選擇數據項作為顯示條目)。對于此類查詢的實現要利用PowerBuilder通過編程的方式在運行時動態地創建數據窗口,并動態地控制數據窗口。

動態地創建一個數據窗口,應用程序需要執行下列任務:

·動態地構造SQL語句。

·用符合數據窗口語法的字符串,為現在的數據窗口控制創建一個數據窗口對象。具體實現如下:

2.1 動態地生成SQL語句,根據SQL的語法:SELECT stringaFROM stringb

WHERE stringc

也就是動態地生成 stringa, stringb, stringc.由用戶輸入要顯示的列,一旦輸入完畢,列名就隨之確定,將所有列名拼成一個“串”,中間用“,”分隔,形如“columm1,column2,column3,...,columnr”,則動態地生成stringa;同樣由用戶輸入查詢條件,包括相應的列、滿足的條件或范圍、邏輯關系等,將這些條件拚成一個串,即為stringc,顯然,所有的列名都確定了,他們所在的表名也確定了,按照stringb的語法規則即可構造。

注意:上面的stringc由兩部分(表間關系stringc1及查詢條件stringc2)組成;表名串stringb與表間關系stringc1、查詢條件stringc2及顯示條目stringa均有關。

在實現的過程中:為貼近實際應用,習慣上,先輸入查詢條件,再輸入顯示條目。即在輸入查詢條件后,生成strinc2,stringb,stringc1;然后,再在輸入顯示條目后生成stringa,并修改stringc1,stringb。最后形成SQL語法:

str=“select”+stringa+“from”+stringb+“where”+stringcl+stringc2

2.2在現在的事物對象里利用相關的SyntaxFromSQL()函數生成符合數據窗口語法的字符串:

exp=syntaxfromsq1(sq1ca,str,strsty,error)生成數據窗口的源代碼

其中:strsty為數據窗口的顯示風格,例:

strsty=“style(type=grid)datawindow(units=lcolor=12632256)text(font.face='system')”

2.3創建數據窗口對象

dw_que.create(exp)

這樣就實現了用戶要求的隨機查詢。

在真實系統中,用戶在輸入查詢條件時希望通過選項方式錄入查詢信息,由于庫表中存放的大量信息為代碼,這就需要在程序中先把錄入的文字信息轉化成相應的代碼再連接到查詢條件中。為簡化輸入,提高準確性,可采用代碼輸入,即動態地嵌套下拉式數據窗口。在顯示查詢結果的數據窗口中,事先不能嵌套下拉式數據窗口,可預先做一個函數,在程序運行中根據所選的列把代碼轉化成所對應的漢字顯示,這樣更完善了用戶要求的隨機查詢。

根據數據窗口的動態特性,對于那些運行時才能確定的數據窗口采用動態方式創建,使應用程序能更靈活地滿足用戶的需求。

3總結

將查詢條件的輸入實現多級菜單選擇將查詢結果文字化,使復雜查詢問題解決得更完善。動態查詢的方法,不僅能應用于人事管理信息系統,同時也是解決其他需要復雜查詢的數據庫應用系統的途徑。這種動態查詢方法的在數據庫應用系統的使用,避免了應用系統開發中開發者冥思苦想所有可能的查詢條件,而系統運行中用戶總遇到有些查詢要求無法滿足的矛盾。動態查詢的實現,縮短了開發周期,減少了產品維護的工作。

主站蜘蛛池模板: 91免费国产高清观看| 婷婷色狠狠干| 天天躁日日躁狠狠躁中文字幕| 亚洲国产日韩在线观看| 欧美国产日本高清不卡| 中国国语毛片免费观看视频| 萌白酱国产一区二区| 五月丁香伊人啪啪手机免费观看| 日本一区高清| 日韩精品一区二区三区视频免费看| 国产特级毛片aaaaaa| 久久精品视频亚洲| 欧美日韩国产精品va| 无码免费的亚洲视频| 日本一本正道综合久久dvd | 日韩欧美中文字幕在线韩免费| 伊人久久综在合线亚洲91| 亚洲欧美一区二区三区麻豆| 精品久久久久久成人AV| 狠狠v日韩v欧美v| 久久频这里精品99香蕉久网址| 亚洲视频在线观看免费视频| 国产精品视频a| 中文字幕无码电影| 午夜综合网| 日韩精品毛片| 成人一级免费视频| 日韩在线视频网| 乱色熟女综合一区二区| 欧美成人午夜影院| 午夜视频免费试看| 国产在线自揄拍揄视频网站| 久久国产成人精品国产成人亚洲 | 波多野结衣AV无码久久一区| 国产美女精品一区二区| 国产免费久久精品99re不卡| 久久精品只有这里有| 91高清在线视频| 亚洲男人天堂2018| 亚洲男人天堂网址| 久久影院一区二区h| 国产成人综合网在线观看| 久久国产精品夜色| 亚洲精品无码抽插日韩| 久久久亚洲国产美女国产盗摄| 亚洲水蜜桃久久综合网站| 久青草免费视频| 亚洲国产欧美自拍| a毛片在线播放| 尤物亚洲最大AV无码网站| 成人一级黄色毛片| 国产a v无码专区亚洲av| 91九色国产porny| 久久午夜夜伦鲁鲁片无码免费| 国产日本视频91| 国产精品久久久久久久伊一| 玩两个丰满老熟女久久网| 蜜桃臀无码内射一区二区三区 | www.99精品视频在线播放| 91最新精品视频发布页| 国产成人综合在线观看| 国产亚洲男人的天堂在线观看| 欧美国产视频| 亚洲国内精品自在自线官| 97一区二区在线播放| 青青草久久伊人| 亚洲综合色在线| 中文精品久久久久国产网址| 久久久波多野结衣av一区二区| 亚洲一区二区无码视频| 国产第一福利影院| 久久青草视频| 无码精品国产dvd在线观看9久| 91一级片| 天天爽免费视频| 一级毛片中文字幕| 丝袜国产一区| 亚洲一区二区视频在线观看| 久久99精品久久久久久不卡| 五月天香蕉视频国产亚| 亚洲精品欧美重口| 九九九精品成人免费视频7|