2025-05-23

一、 SQL標記的表現形式與作用。



我們在看Java的源代碼的時候,後續經常會看到如下的表示:



其實這就是一個典型的SQL標記。在JSP語言中,SQL標記主要用來方便的實現對數據的相關操作。如建立數據庫連接等等。JSP語言其主要用來動態的獲取數據庫中的數據,為此在JSP語言中建立與數據庫的連接是必須的。同時,JSP語言不適宜完成比較復雜的運算,這些運算往往是放置在JavBeans中來實現。故對於Jsp語言來說,SQL標記主要完成的是數據庫連接管理、數據查詢等操作。



如上面這個SQL標記,就是簡單的定義瞭一個數據庫的信息。在這個SQL標記中,還可以使用其他的參數來定義具體的數據庫信息。如可以定義數據源的JNDL名字或者驅動器管理器名稱等等,在這裡主要可以用到VAR、Driver、URL三個參數。Driver主要用來決定連接數據庫所采用的數據庫驅動程序。這個參數直接關系到數據庫連接是否成功。這裡需要註意的是,不同的數據庫所采用的數據庫驅動是不同的,如Oracle數據庫與SQLServer數據庫。這也就要求開發人員在開發應用程序的時候,需要根據不同的數據庫采用不同的驅動程序。特別是需要考慮,當某個應用程序能夠采用多種數據庫的情況下,如何讓系統在合適的情況下采用合適的驅動程序。一般來說,采用什麼樣的數據庫在系統部署時就已經確定瞭,在系統安裝時,都會讓系統人員選擇所采用的數據庫。即在系統基本參數那邊,會有所采用的數據庫的相關信息。為此在使用SQL標記的時候,可能還需要結合使用IF或者Case等判斷語句,來決定所采用的數據庫驅動程序。



二、 SQL標記從數據庫中查詢數據。



SQL標記在JSP語言中使用的最廣泛的就是動態的從數據庫中獲取相關的數據。此時需要使用到的SQL標記是sql:query。這個標記主要用來實現SQL語句訪問數據庫並返回一個結果。也就是說,一般的SQL查詢語句,如Select語句JSP語言是不認識的。開發人員往往將其封裝在SQL標記中傳遞給數據庫。數據庫運行之後,SQL標記再將相關的結果傳遞給應用程序。在使用這個參數的時候,筆者認為需要註意以下幾點。



一是需要先建立數據庫的連接。SQL:Query標記主要用來實現SQL語句訪問數據庫並從數據庫中返回相關的結果。這也就是說,在使用這個標記的時候,必須要先建立起數據庫的連接。否則的話,系統就會報錯。



二是需要註意,在查詢語句中盡量采用參數。如現在從一個產品中查詢相關的數據。如果這個產品中有10萬條記錄,而在查詢語句中又沒帶相關的參數,那麼此時數據庫就會返回全部的記錄。此時就會影響系統響應的速度。而且從用戶的角度講,他也沒有比較瞭解到全部的信息。故一般都會在sql:query標記中帶上相關的參數。如果要實現這個需求的話,開發人員可以通過Param標記在sql:query中定義所需要采用的參數。不過參數的定義一定要正確。而且所采用的數據庫表的名字一定要是表中已經存在的字段。特別需要註意的是,不同的數據庫可能對於字段大小寫是否敏感的要求是不同的。如Oracle數據庫中,字段名稱大小寫是等價的。但是字段中保存的值大小寫是敏感的。為此在參數中傳遞字段名或者參數值的時候,需要考慮對於大小寫的處理方式。



三是需要考慮,是否讓查詢語句帶上默認的參數。有時候用戶可能會偷懶,沒有在查詢界面上輸入參數。此時如果沒有默認參數的話,系統響應的速度就可能會比較慢。數據庫管理員可能會多次提醒開發人員要采用默認參數來改善數據庫的查詢效率。如現在需要查詢產品信息表。在Web界面中一次可能隻能夠顯示50條記錄。在這種情況下,如果一次性的將數據從數據庫中查詢出來,會降低系統的性能。此時比較合理的做法是,給sql:query標記帶上一個默認的參數。在用戶沒有輸入任何限制條件的話,sql語言從數據庫中每次查詢出的數據是50條記錄。當用戶需要更多的信息,點擊下一頁時再執行查詢語句一次,顯示後面的50條記錄。



由於數據庫查詢優化很大部分依賴於查詢過程中的Where語句。在sql:query標記中則是通過Param標記來完成的。為此出於提升應用系統性能的目的考慮,最好給SQL語句提供默認的參數。具體參數如何設置,就需要根據應用系統的實際情況瞭。如對於銷售訂單,可以默認顯示當天的訂單信息。對於產品信息,則可以默認設置為顯示最近建立的50個產品信息,等等。


  

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *