Java Web開發(fā)之信息查詢方式總結(jié)
本文實(shí)例講述了Java Web開發(fā)之信息查詢方式總結(jié)。分享給大家供大家參考。具體如下:
這里介紹的查詢方式有:
① 根據(jù)某個(gè)特定的字段查詢;
② 在多個(gè)字段中查詢;
③ 根據(jù)任意字段查詢;
④ 任意字段組合查詢;
⑤ 多值查詢。
根據(jù)某個(gè)特定的字段進(jìn)行查詢
用戶在輸入界面中輸入要查詢的字段的值,然后系統(tǒng)根據(jù)這個(gè)值進(jìn)行查找。
下面的實(shí)例是根據(jù)用戶名查詢用戶的詳細(xì)信息,簡(jiǎn)單的效果圖如下:
關(guān)鍵代碼如下:
<p>請(qǐng)輸入要查詢的姓名:</p> <form action="select.jsp" method="POST"> <p><input type="text" name="username" size="20"><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫" name="B2"></p> </form>
處理文件的代碼如下:
<%@ page contentType="text/html;charset=gb2312"%> <% StringBuffer sql=new StringBuffer(); //查詢字符串 String username = request.getParameter("username"); //查詢的條件 if(username==null||username.length()==0) { out.println("請(qǐng)輸入查詢條件!"); } else { sql.append("select * from user where username like '"); sql.append(username); sql.append("'"); } //接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢即可 %>
這里主要關(guān)心SQL語(yǔ)句即可,查詢過(guò)程和顯示過(guò)程參考其它主題。
上面進(jìn)行的是精確的查詢,可以進(jìn)行模糊查詢,例如可以查詢用戶名包含某個(gè)字的用戶的信息。
只需要修改代碼中的查詢語(yǔ)句部分,修改后的代碼如下:
sql.append("select * from user where username like '%"); sql.append(username); sql.append("%'");
僅僅增加了模糊查詢的通配符“%”,如果要查詢以什么開頭,去掉前面的通配符即可,如果查詢以什么結(jié)束,去掉后面的同配符即可。
在多個(gè)字段中查詢
假設(shè)有一個(gè)關(guān)于Java技術(shù)的BBS,每個(gè)記錄都有標(biāo)題、摘要、內(nèi)容等字段,這里我們忽略其它字段,如果用戶希望查看關(guān)于編碼的問題,他希望不管是在標(biāo)題、摘要還是內(nèi)容中只要包含他輸入的信息都應(yīng)該能夠查詢出來(lái),這時(shí)候就需要在多個(gè)字段中查詢。
關(guān)鍵代碼如下:
<p>請(qǐng)輸入要查詢的關(guān)鍵字:</p> <form action="select.jsp" method="POST"> <p><input type="text" name="condition" size="20"><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫" name="B2"></p> </form>
查詢的處理代碼如下:
<%@ page contentType="text/html;charset=gb2312"%> <% StringBuffer sql=new StringBuffer(); //查詢字符串 String condition =request.getParameter("condition"); //查詢的條件 if(condition==null||condition.length()==0) { out.println("請(qǐng)輸入查詢條件!"); } else { sql.append("select * from user where title like '%"); sql.append(condition); sql.append("%' and summary like '%"); sql.append(condition); sql.append("%' and detail like '%"); sql.append(condition); sql.append("%'"); } //接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢即可 %>
根據(jù)任意字段查詢
可以讓用戶選擇根據(jù)什么進(jìn)行查詢,然后輸入要查詢的值,這樣的查詢比較復(fù)雜,但是對(duì)于用戶來(lái)說(shuō)最方便。
處理文件:
<%@ page contentType="text/html;charset=gb2312"%> <% StringBuffer sql=new StringBuffer(); //查詢字符串 String condition = request.getParameter("condition"); //查詢的字段 String v = request.getParameter("v"); //查詢的值 if(v.length()==0) { out.println("請(qǐng)輸入查詢條件!"); } else { sql.append("select * from user where "); //根據(jù)用戶選擇的字段進(jìn)行處理 if(condition.equals("a")) sql.append(" a like '"); else if(condition.equals("b")) sql.append(" b like '"); else sql.append(" c like '"); sql.append(v); sql.append("'"); /* 如果界面中下拉列表中的條件是數(shù)據(jù)庫(kù)中字段的名字,上面的代碼會(huì)非常簡(jiǎn)單: sql.append("select * from user where "); sql.append(condition); sql.append(" like '"); sql.append(v); sql.append("'"); */ } //接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢即可 %>
任意組合查詢
把所以可以查詢的字段全部列出來(lái),每個(gè)字段對(duì)應(yīng)一個(gè)輸入框,用戶可以根據(jù)某個(gè)字段或者某幾個(gè)字段進(jìn)行查詢,需要根據(jù)什么查詢,在相應(yīng)的輸入框中輸入信息即可。
查詢的處理文件:
<%@ page contentType="text/html;charset=gb2312"%> <% StringBuffer sql=new StringBuffer(); //查詢字符串 String a = request.getParameter("a"); String b = request.getParameter("b"); String c = request.getParameter("c"); String d = request.getParameter("d"); //獲取用戶輸入的查詢條件 sql.append("select * from user where"); if(a.length()!=0) { sql.append(" a like '"); sql.append(a); sql.append("' and"); } if(b.length()!=0) { sql.append(" b like '"); sql.append(b); sql.append("' and"); } if(c.length()!=0) { sql.append(" c like '"); sql.append(c); sql.append("' and"); } if(d.length()!=0) { sql.append(" d like '"); sql.append(d); sql.append("' and"); } sql.trim(sql.length-3,3); //刪除最后的4個(gè)字母(" and") //接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢即可 %>
多值查詢
用戶在單個(gè)輸入框輸入多個(gè)數(shù)據(jù)進(jìn)行查詢,可以查詢某個(gè)字段同時(shí)包含多個(gè)關(guān)鍵字,例如查詢主題中既包含“java”又包含“C++”的記錄,或者一個(gè)數(shù)字區(qū)間,例如年齡在19和22之間的記錄,或者一個(gè)時(shí)間范圍,例如出生在1981年1月1日和1983年12月31日之間的記錄。
這里只介紹按照數(shù)字區(qū)間進(jìn)行查找的,其它情況的實(shí)現(xiàn)基本相同。
處理文件:
<%@ page contentType="text/html;charset=gb2312"%> <% StringBuffer sql=new StringBuffer(); //查詢字符串 String condition = request.getParameter("condition"); //獲取查詢條件 int index = condition.indexof(" "); //查找空格位置,空格作為兩個(gè)數(shù)字的分隔符 String min=condition.subString(1,index); //前面的值 String max=condition.subString(index+1,condition.length-1); //后面的值 try { Integer.parseInt(min); Integer.parseInt(max); }catch(Exception e) { out.println("輸入的信息不合法!"); return; } sql.append("select * from user where age between "); sql.append(min); sql.append(" and "); sql.append(max); //構(gòu)造查詢字符串 //接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢即可 %>
希望本文所述對(duì)大家的JSP程序設(shè)計(jì)有所幫助。
相關(guān)文章
JSP對(duì)JavaBean的各種常用操作方法總結(jié)
這篇文章主要介紹了JSP對(duì)JavaBean的各種常用操作方法總結(jié),包括對(duì)JavaBean屬性的設(shè)置獲取移除等,是JSP入門的基礎(chǔ),需要的朋友可以參考下2016-04-04JSP上傳excel及excel插入至數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了JSP上傳excel及excel插入至數(shù)據(jù)庫(kù)的方法,涉及JSP文件上傳及針對(duì)excel的讀取、寫入數(shù)據(jù)庫(kù)等操作技巧,需要的朋友可以參考下2015-10-10response.setContentType()的作用及MIME參數(shù)詳解
response.setContentType(MIME)的作用是使客戶端瀏覽器,區(qū)分不同種類的數(shù)據(jù),并根據(jù)不同的MIME調(diào)用瀏覽器內(nèi)不同的程序嵌入模塊來(lái)處理相應(yīng)的數(shù)據(jù),本文詳細(xì)介紹,需要了解的朋友可以參考下2012-12-12