再利用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 如果查詢條件不為空,首先讓全部成...