jdbc中如何實現模糊查詢

2021-09-07 08:11:18 字數 1674 閱讀 7490

再利用jdbc執行sql語句的時候,對於其他的句子的執行沒什麼太大的問題:加上佔位符,然後設定佔位符的值。

但是在模糊查詢的時候,一直都寫不對,這裡提供了兩種可選的解決辦法,以供參考。

string sql = "select studentname, age, phone, address, other from customer"

+ " where studentname like ? ";

pstmt = conn.preparestatement(sql);

// 設定引數

pstmt.setstring(1, "%" + customername + "%" );       

// 獲取查詢的結果集           

rs = pstmt.executequery();

百分號直接寫在sql語句中

string sql = "select customercode, customername, phone, address, relationman, other from customer"

+ " where customername like \"%\"?\"%\" ";

pstmt = conn.preparestatement(sql);           

// 設定引數

pstmt.setstring(1, customername);       

// 獲取查詢的結果集           

rs = pstmt.executequery();

得研究一下preparedstatement是如何來處理佔位符的。

在presparedstatement中的setstring()方法中有如下的一段**:

public void setstring(int parameterindex, string x) throws sqlexception else else

setinternal(parameterindex, parameterasbytes);

} else else

setbytes(parameterindex, parameterasbytes);

}return;

}string parameterasstring = x;

boolean needsquoted = true;

if (this.isloaddataquery || isescapeneededforstring(x, stringlength))

byte parameterasbytes = null;

setinternal(parameterindex, parameterasbytes);

this.parametertypes[parameterindex - 1 + getparameterindexoffset()] = types.varchar;}}

}protected final void setinternal(int paramindex, byte val) throws sqlexception

}在setstring()方法中,字串會變為\'string\'的這種形式插入。

第一種方法可以成功比較好理解一些,但是第二種就有點想不通了。這裡從源**看出一點端倪就是會判斷字串中有沒有轉義字元,而且還會判斷字串需不需要被括起來。現就了解了這些,有空再深鑽。

jdbc中實現模糊查詢

再利用jdbc執行sql語句的時候,對於其他的句子的執行沒什麼太大的問題 加上佔位符,然後設定佔位符的值。但是在模糊查詢的時候,一直都寫不對,這裡提供了兩種可選的解決辦法,以供參考。string sql select studentname,age,phone,address,other from ...

如何做模糊查詢php,php怎樣實現模糊查詢

php實現模糊查詢的方法 1 使用sql匹配模式,操作符就要使用like或not like,匹配時,不區分大小寫 2 使用正規表示式匹配模式,其正規表示式出現在匹配欄位的任意位置。php實現模糊查詢的方法 方法1 sql匹配模式 1.使用sql匹配模式,不能使用操作符 或!而是使用操作符like或n...

jQuery實現模糊查詢

今天做了乙個類似從qq群組選出成員的功能,要求能對群裡面已有的成員實現模糊查詢,但是後台介面不支援模糊查詢,所以乾脆在前台進行模糊查詢,讓能匹配到的群組成員顯示,不能匹配的成員進行隱藏來達到模糊查詢的效果。下面是我的 模糊搜尋 function query else 如果查詢條件不為空,首先讓全部成...