国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Web模式下動(dòng)態(tài)數(shù)據(jù)庫(kù)綜合查詢技術(shù)

2012-04-29 00:44:03崔艷榮陳勇
電腦知識(shí)與技術(shù) 2012年5期

崔艷榮 陳勇

摘要:該文分析了數(shù)據(jù)庫(kù)查詢技術(shù)的現(xiàn)狀,提出了WEB模式下動(dòng)態(tài)數(shù)據(jù)庫(kù)綜合查詢技術(shù),實(shí)現(xiàn)了動(dòng)態(tài)查詢列表的生成和動(dòng)態(tài)查詢條件的生成,并將該技術(shù)應(yīng)用于基于Web模式的項(xiàng)目中,取得了很好的查詢效果。

關(guān)鍵詞:Web模式;動(dòng)態(tài)列表;查詢技術(shù)

中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)05-0991-02

Dynamic Database Query Technology Based on Web Mode

CUI Yan-rong, CHEN Yong

(School of Computer and Science, Yangtze University, Jinzhou 434023, China)

Abstract: This paper has analyzed the present situation of the database query technology, and proposed the dynamic database query tech? nology based on Web mode, realized generation of the dynamic query list and the query condition, and this technology was applied in the project based on Web model, and achieved very good query effect.

Key words: Web mode; dynamic list; query technology

隨著計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,越來(lái)越多的應(yīng)用系統(tǒng)都是基于Web模式開(kāi)發(fā)的,在基于Web模式的應(yīng)用系統(tǒng)中,數(shù)據(jù)查詢頻繁,數(shù)據(jù)庫(kù)查詢技術(shù)成為這類(lèi)系統(tǒng)的一個(gè)關(guān)鍵技術(shù)。

1數(shù)據(jù)庫(kù)查詢技術(shù)現(xiàn)狀

數(shù)據(jù)庫(kù)查詢技術(shù)已經(jīng)被廣泛應(yīng)用到WEB程序開(kāi)發(fā)中[1-4],例如高考成績(jī)?cè)诰€查詢、OA系統(tǒng)中的人事信息查詢等。一般來(lái)說(shuō),程序中利用用戶提供的關(guān)鍵字段輸入值作為查詢條件,從而從數(shù)據(jù)表中查出符合條件的記錄,并顯示在客戶端。例如高考成績(jī)查詢系統(tǒng)中根據(jù)用戶提供的學(xué)生準(zhǔn)考證號(hào)碼從而提取出相應(yīng)的記錄并發(fā)回到客戶端顯示在WEB頁(yè)面上。實(shí)際上這是一種小范圍內(nèi)的動(dòng)態(tài)查詢,查詢指令是預(yù)先指定好并接受一個(gè)用戶輸入?yún)?shù)作為比較條件而進(jìn)行查詢的。然而,這種查詢技術(shù)存在很大的局限性,如果用戶不記得這個(gè)關(guān)鍵字的信息(如OA系統(tǒng)中的員工身份證號(hào)碼為查詢關(guān)鍵字)但知道其他很多非關(guān)鍵字的信息(如知道這個(gè)員工姓什么、性別、所在部門(mén)、大致住在哪個(gè)小區(qū)等),這時(shí)候就沒(méi)辦法查詢所需的數(shù)據(jù)。基于此,提出一種WEB模式下交互式的動(dòng)態(tài)數(shù)據(jù)庫(kù)綜合查詢技術(shù)。

2 WEB交互查詢技術(shù)

WEB模式下交互式的動(dòng)態(tài)數(shù)據(jù)庫(kù)綜合查詢技術(shù)是讓用戶指定任何多個(gè)組合條件并且由用戶指定輸出哪些特定字段的查詢方法:利用一定的WEB交互式技術(shù),讓用戶選擇要輸出的字段列表,同時(shí)由用戶指定查詢條件組合,然后根據(jù)用戶的定義組合動(dòng)態(tài)地生成查詢指令,最后將查詢結(jié)果集顯示在客戶端頁(yè)面上。

2.1動(dòng)態(tài)查詢列表的生成

用一個(gè)具體的例子來(lái)說(shuō)明這種查詢技術(shù),《居民病傷死亡原因統(tǒng)計(jì)網(wǎng)絡(luò)直報(bào)系統(tǒng)》是一個(gè)實(shí)際工程項(xiàng)目,其數(shù)據(jù)庫(kù)中有個(gè)card表,用來(lái)記錄全國(guó)各個(gè)地區(qū)居民死亡者的信息,稱(chēng)為卡片表,其中的每一條記錄都是一個(gè)死者的信息,表中有40多個(gè)字段,如數(shù)據(jù)年份、行政區(qū)劃,死者姓名、性別、出生日期、死亡日期、死因代碼(表示死亡的原因)、民族、職業(yè)、生前所在單位,生前所住地址、家屬姓名、聯(lián)系電話、死亡地點(diǎn)等。在項(xiàng)目中實(shí)現(xiàn)了根據(jù)用戶指定的字段來(lái)返回結(jié)果的綜合查詢處理,即根據(jù)用戶的選擇字段列表和輸入的條件組合動(dòng)態(tài)生成查詢語(yǔ)句(查詢指令),數(shù)據(jù)表查詢語(yǔ)句SQL的格式如下:

Select [字段1],[字段2],…,[字段n] from [數(shù)據(jù)表名] where條件

從上面的SQL語(yǔ)句中,要?jiǎng)討B(tài)生成兩個(gè)內(nèi)容,分別為字段列表和條件。對(duì)應(yīng)用系統(tǒng)來(lái)說(shuō),字段列表就是用戶在頁(yè)面上選擇的那些字段組合,條件是用戶一個(gè)一個(gè)增加進(jìn)來(lái)的,程序的任務(wù)就是要獲取這些用戶輸入的信息,然后根據(jù)這些信息經(jīng)過(guò)一定的處理后合成相應(yīng)的查詢語(yǔ)句。具體方法如下:

document.all.ctl00_mianmb_ctj.value+=ztj;

tr=document.all.tjh.insertRow();

td=tr.insertCell().innerText=document.all.lj.value;

td=tr.insertCell().innerText=document.all.zd.value;

td=tr.insertCell().innerText=document.all.bj.value;

if(o=="date"||o=="birthdate"||o=="deathdate")

td=tr.insertCell().innerText=rq.substr(0,4)+"年"+rq.substr(4,2)+"月"+rq.substr(6,2)+"日"

else td=tr.insertCell().innerText=document.all.z.value

tr.style.cursor="hand";

tr.onmouseover=new Function("mov(this)");

tr.onmouseout=new Function("mot1(this)");

tr.name=ztj;

tr.onclick=new Function("del(this.name)");

tr.title="點(diǎn)擊后刪除本行條件";

gd.scrollTop=3000;

document.all.z.value="";

document.all.z.focus();

在生成查詢語(yǔ)句前,先對(duì)用戶的輸入進(jìn)行一些處理。為了能讓用戶自定義選擇要查詢顯示的字段,應(yīng)用系統(tǒng)把該表的所有字段都放在頁(yè)面上,這里用到一個(gè)“翻譯”的技術(shù),原因是顯示給用戶看的字段名稱(chēng)并不是數(shù)據(jù)庫(kù)字段的真實(shí)名稱(chēng),因?yàn)樾屎蜁?shū)寫(xiě)等多方面的原因,應(yīng)用系統(tǒng)把字段名稱(chēng)設(shè)計(jì)成英文名稱(chēng),但應(yīng)用系統(tǒng)為了讓更多的用戶明白其代表的意思,所以在頁(yè)面上提供給用戶看到的是該字段的中文翻譯名稱(chēng),如前面提到的“死者姓名”這個(gè)字段在數(shù)據(jù)庫(kù)中的名稱(chēng)是name,通過(guò)一個(gè)二維數(shù)組實(shí)現(xiàn)這個(gè)“翻譯”的過(guò)程。例如用戶點(diǎn)選的是“死者姓名”字段,但應(yīng)用系統(tǒng)中記錄的是和它對(duì)應(yīng)的另外一維數(shù)據(jù)中的name,用一個(gè)初始化為空的新數(shù)組來(lái)記錄用戶的選擇,用戶每選擇一個(gè)字段,應(yīng)用系統(tǒng)就在這個(gè)新數(shù)組中增加一個(gè)數(shù)據(jù),當(dāng)用戶取消選擇的時(shí)候程序也同樣地能去掉相應(yīng)的數(shù)據(jù),這樣就實(shí)現(xiàn)了用戶自定義列表字段的功能,最后程序用一條數(shù)組轉(zhuǎn)換為字符串的語(yǔ)句實(shí)現(xiàn)SQL語(yǔ)句中的字段列表。

2.2動(dòng)態(tài)查詢條件的生成

得到了用戶自定義的字段列表后,應(yīng)用系統(tǒng)還不能生成完整的查詢語(yǔ)句,還需要查詢條件,下面說(shuō)明動(dòng)態(tài)生成查詢條件的方法。

為了讓數(shù)據(jù)表中的每一個(gè)字段都可以作為查詢的條件,應(yīng)用系統(tǒng)中設(shè)計(jì)一個(gè)下拉式選擇列表框,以便讓用戶自由選擇作為條件的字段,同時(shí)提供另外一個(gè)選擇列表框,讓用戶確定這個(gè)條件加到總條件中的運(yùn)算方式,只有兩個(gè)選擇,分別是“并且”和“或者”,從字面上很容易理解它們的意思,和前面所說(shuō)的“翻譯”一樣,實(shí)際上用戶的選擇在程序中被翻譯成了相應(yīng)的標(biāo)準(zhǔn)條件組合代碼and和or,含義是邏輯“與”和邏輯“或”。

用戶選定字段后,接著給出此字段的比較條件,是相等還是大于等等,根據(jù)用戶選取的字段的類(lèi)型不同,比較條件的運(yùn)算符也動(dòng)態(tài)地生成所對(duì)應(yīng)的運(yùn)算選擇列表框,假如用戶選的是字符型字段,那么應(yīng)用系統(tǒng)就提供等于、包含(用于模糊查詢)、不等于等一系列條件運(yùn)算符,假如用戶選擇的字段是數(shù)字型或日期型的字段,那么很顯然用于字符型的比較運(yùn)算符就不適用了(例如對(duì)于數(shù)字型的字段就不能用“包含”運(yùn)算符),這時(shí)候應(yīng)用系統(tǒng)動(dòng)態(tài)地改變這個(gè)列表選擇,使之提供適合于所選字段的比較運(yùn)算符,對(duì)于數(shù)字型的字段提供等于、不等于、大于、不大于(小于等于)、小于、不小于(大于等于)等等。

同樣地,應(yīng)用系統(tǒng)設(shè)計(jì)了一個(gè)翻譯器,把用戶選擇的比較運(yùn)算符“翻譯”成計(jì)算機(jī)能識(shí)別的標(biāo)準(zhǔn)SQL語(yǔ)句中的比較運(yùn)算符(例如把等于翻譯成=,大于翻譯成>,包含翻譯成like等)。最后輸入用于和字段比較的條件值。做完這些后實(shí)際上只是完成了多個(gè)條件中的一個(gè)條件。用一個(gè)“按扭”把輸入的這個(gè)條件增加到條件集中,重復(fù)上面的過(guò)程就完成了多個(gè)條件的輸入,把這多個(gè)條件按輸入順序組合起來(lái)就生成了程序所需要的查詢條件。

由于條件數(shù)量是沒(méi)有限制的,所提供的字段也包括了要查詢表中的全部字段,所以這樣的方法就完全實(shí)現(xiàn)了用戶自定義條件的綜合查詢。圖1就是使用這種技術(shù)的具體應(yīng)用結(jié)果。

圖1 Web交互查詢技術(shù)示例圖中最上部是條件選擇部分,用戶可以根據(jù)查詢需要自由組合條件,每增加一個(gè)條件就用一次增加,增加后的條件顯示在中部右邊的列表里,頁(yè)面中部左邊是整個(gè)表的字段列表,用戶選中的字段為紅顏色顯示(再次點(diǎn)選已選中的字段則變成取消這個(gè)字段),所有條件都輸入完成后可以點(diǎn)擊“查詢”按扭,程序開(kāi)始根據(jù)用戶的這些選擇連接服務(wù)器數(shù)據(jù)庫(kù)進(jìn)行查詢,并把所得到的結(jié)果返回頁(yè)面。頁(yè)面的下部就是根據(jù)這些條件從數(shù)據(jù)庫(kù)中所查出的結(jié)果集,圖例中符合這些條件的只有一條,所以只顯示出這一條,當(dāng)用戶輸入的條件很寬松(例如只輸入一個(gè)死者姓名包含張)時(shí),查詢結(jié)果集中可能會(huì)有很多個(gè)記錄,當(dāng)用戶輸入的條件太過(guò)嚴(yán)格時(shí)(比如輸入一個(gè)不存在的身份證號(hào)碼),系統(tǒng)會(huì)提示沒(méi)有滿足條件的記錄。

3結(jié)束語(yǔ)

總之,通過(guò)動(dòng)態(tài)地構(gòu)造SQL查詢語(yǔ)句,能夠做到任何條件組合的查詢,同時(shí)也能實(shí)現(xiàn)任意挑選字段的顯示,這種技術(shù)就是動(dòng)態(tài)綜合查詢。利用這種技術(shù),還可以實(shí)現(xiàn)更為復(fù)雜的查詢,例如可以再增加一個(gè)表的選擇,實(shí)現(xiàn)多表查詢,也可以再增加特殊功能的查詢,讓具有一定數(shù)據(jù)庫(kù)基礎(chǔ)的用戶實(shí)現(xiàn)更為復(fù)雜的自定義語(yǔ)句查詢。此查詢技術(shù)在大型項(xiàng)目中已經(jīng)應(yīng)用,取得很好的查詢效果。

參考文獻(xiàn):

[1]姜躍.數(shù)據(jù)庫(kù)查詢方法優(yōu)化研究[J].電腦知識(shí)與技術(shù),2011,7(5):977-978,980.

[2]劉兵.基于Web服務(wù)的數(shù)據(jù)庫(kù)查詢[J].福建電腦,2007(2):141-141.

[3]馮本勇.數(shù)據(jù)庫(kù)查詢優(yōu)化技術(shù)探討[J].石家莊理工職業(yè)學(xué)院學(xué)術(shù)研究,2008,3(4):11-13.

[4]沈海峰.簡(jiǎn)論關(guān)系數(shù)據(jù)庫(kù)的查詢優(yōu)化[J].淮北職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011,10(1):7-8.

天长市| 永昌县| 乾安县| 新沂市| 盐津县| 青州市| 岚皋县| 河间市| 仁化县| 平谷区| 平遥县| 鄂伦春自治旗| 定西市| 阜新| 甘洛县| 红桥区| 容城县| 彩票| 海兴县| 都兰县| 岳普湖县| 资源县| 嘉兴市| 敖汉旗| 吴旗县| 湖州市| 林芝县| 阿拉善左旗| 台北市| 长春市| 陆丰市| 富川| 涿鹿县| 南靖县| 岳阳市| 台湾省| 松江区| 宁国市| 昔阳县| 酉阳| 札达县|