java代碼中查詢問題 Java代碼檢查

java中模糊查詢的問題

用CONTAINS

站在用戶的角度思考問題,與客戶深入溝通,找到二道網(wǎng)站設(shè)計與二道網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋二道地區(qū)。

將 sql+=" and a.ORDER_NAME =? ";

改為 sql+=" and CONTAINS(a.ORDER_NAME, '%' ||? || '%') ";

LIKE 直接在數(shù)據(jù)庫中查找可以查到所有所需數(shù)據(jù),但是會掃描整個表,影響性能。

CONTAINS是基于全文索引進行查詢,查詢結(jié)果受全文索引分詞的方法影響,查詢結(jié)果會不全。

所以需要精確查詢用LIKE,內(nèi)容搜索用CONTAINS提高效率!

LZ自己決定。

java中數(shù)據(jù)庫查詢問題、代碼如下。用Statement可以查,用PreparedStatement中setstring查不出

System.out.println(rs.getString("UserName") + "\t" + rs.getString("PassWord"));出錯了。

按你SQL看你數(shù)據(jù)庫中用戶名字段為LoginName,所以只要把rs.getString("UserName")改為rs.getString("LoginName")就可以了。

java用戶管理的代碼中查詢不了是哪出問題了

一)[DLS_DEAD_LOCAL_STORE]

描述: Dead store to 未使用的局部變量

解決方法:局部變量定義后未使用;實例化對象后又重新對該對象賦值

(二) [ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD]

描述:Write to static field 通過實例方法更新靜態(tài)屬性

常見于常量類,直接通過類名.常量名獲取的方式違背了封裝的原則,findbugs不提倡使用,而如果將常量改成靜態(tài)成員變量,又因為spring不支持靜態(tài)注入導(dǎo)致不能實現(xiàn),解決方法是非靜態(tài)的setter調(diào)用靜態(tài)的setter方法給靜態(tài)成員變量賦值。

解決方法:

常量類F:

class F{

public static String a = “123”;

}

常量a改為靜態(tài)成員變量,通過F.getA()獲取,且由于spring不支持靜態(tài)注入,改為:

class F{

private static String a;

public static Integer getA() {

return a;

}

public void setA(String a) {

setAValue(a);

}

public static void setAValue(String a) {

F.a = a;

}

}

(三) [BX_UNBOXING_IMMEDIATELY_REBOXED]

描述: Boxed value is unboxed and then immediately reboxed 裝箱的值被拆箱,然后立刻重新裝箱了

常見的是三目運算時,同時存在基本類型和包裝類型。

解決方法:

Integer a = null;

//...

a = (a == null)?0:a;

此問題在于a不為null時,會被拆箱,賦值時再裝箱。這是自動裝箱拆箱的特性,只要運算中有不同類型,當涉及到類型轉(zhuǎn)換時,編譯器就會向下轉(zhuǎn)型,再進行運算。修改方法,統(tǒng)一類型:

Integer a = null;

//...

a = (a == null)?Integer.valueOf(0):a;

(四) [SE_BAD_FIELD]

描述: Non-transient non-serializable instance field in serializable class在可序列化的類中存在不能序列化或者不能暫存的數(shù)據(jù)

解決方法:

方法1:序列化該對象

方法2:當采用struts2框架開發(fā),不可避免的此問題會大量出現(xiàn),因為ActionSupport實現(xiàn)了序列化接口,action繼承了此類,而 service沒序列化,所以在action中引用service對象時提示此錯誤,最簡單的解決方法是將service對象聲明成transient, 即service不需要序列化

方法3(未驗證):To avoid java serialization you need to implement writeObject() and readObject() method in your Class and need to throw NotSerializableExceptionfrom those method.(action中實現(xiàn)這兩個方法?)

private void writeObject(java.io.ObjectOutputStream stream) throws java.io.IOException {

throw new java.io.NotSerializableException( getClass().getName() );

}

private void readObject(java.io.ObjectInputStream stream) throws java.io.IOException, ClassNotFoundException {

throw new java.io.NotSerializableException( getClass().getName() );

}

(五) [NP_LOAD_OF_KNOWN_NULL_VALUE]

描述: Load of known null value加載已知是null的值

解決方法:已知方法參數(shù)為null是,直接傳遞null而不是參數(shù)名

(六) [REC_CATCH_EXCEPTION]

描述: Exception is caught when Exception is not thrown 過泛地捕獲異常或捕獲異常后未做任何處理

解決方法:異常分類捕獲(至少要打印出此異常對象)

(七) [NP_NULL_PARAM_DEREF]

描述: Null passed for nonnull parameter 把空值傳給了非空的參數(shù)

解決方法:增加非空判斷

(八) [NP_IMMEDIATE_DEREFERENCE_OF_READLINE]

描述: Immediate dereference of the result of readLine() 立即引用了readLine()的結(jié)果

解決方法:判斷readLine的結(jié)果是否為空

(九) [EI_EXPOSE_REP] 惡意代碼漏洞

描述:may expose internal representation by returning getter方法返回引用類型

eclipse自動生成的引用類型(Object、數(shù)組、Date等)的getter、setter方法會得到或通過對可變對象的引用操作而暴露代碼內(nèi)部實現(xiàn),解決方法很多,只要返回的或賦值的對象不是原引用對象即可。

解決方法:

以Date類型為例:

public Date getHappenTime() {

if(happenTime != null){

return (Date) happenTime.clone();

}

return null;

}

(十) [ EI_EXPOSE_REP2] 惡意代碼漏洞

描述:may expose internal representation by storing an externally mutable object into setter方法返回引用類型

eclipse自動生成的引用類型(Object、數(shù)組、Date等)的getter、setter方法會得到或通過對可變對象的引用操作而暴露代碼內(nèi)部實現(xiàn),解決方法很多,只要返回的或賦值的對象不是原引用對象即可。

解決方法:

以Date類型為例:

public void setHappenTime(Date happenTime) {

if(happenTime != null){

this.happenTime = (Date) happenTime.clone();

}else{

this.happenTime = null;

}

}

文章題目:java代碼中查詢問題 Java代碼檢查
鏈接URL:http://www.muchs.cn/article18/hphpdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、小程序開發(fā)、定制網(wǎng)站網(wǎng)站制作、網(wǎng)站維護微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)