Prestatement與Statement的區別

2021-04-18 14:51:50 字數 843 閱讀 2958

看下面兩段程式片斷: code fragment 1:

string updatestring = "update coffees set sales = 75 " + "where cof_name like ′colombian′";

stmt.executeupdate(updatestring);

code fragment 2:
preparedstatement updatesales = con.preparestatement("update coffees set sales = ? where cof_name like ? ");

updatesales.setint(1, 75);

updatesales.setstring(2, "colombian");

updatesales.executeupdate();

片斷2和片斷1的區別在於,後者使用了

preparedstatement物件,而前者是普通的

statement物件。

preparedstatement物件不僅包含了sql語句,而且大多數情況下這個語句已經被預編譯過,因而當其執行時,只需dbms執行sql語句,而不必先編譯。當你需要執行

statement物件多次的時候,

preparedstatement物件將會大大降低執行時間,當然也加快了訪問資料庫的速度。 這種轉換也給你帶來很大的便利,不必重複sql語句的句法,而只需更改其中變數的值,便可重新執行sql語句。選擇

preparedstatement物件與否,在於相同句法的sql語句是否執行了多次,而且兩次之間的差別僅僅是變數的不同。如果僅僅執行了一次的話,它應該和普通的物件毫無差異,體現不出它預編譯的優越性。

倍增法與st

一篇部落格 最常用,也是最簡單的演算法,實質就是直接對暴力使用倍增優化將複雜度降低達到需求。有樹上的倍增和區間的倍增 depth 為每個節點的深度,fa i j i節點的 2 j 的父親。lg i log 2 1 const int maxn 5000001 int depth maxn fa ma...

RMQ問題與ST演算法

對於問題 rmq,random maximum query 給你一串固定 不修改的數字,詢問多次某個區間內的最大值或者最小值。用樸素的想法,依次遍歷得到答案,時間複雜度為o n 但是對於多次詢問,如1e6次詢問,這樣的演算法就不是最優的了。所以出現了st演算法。st演算法的原理是動態規劃,通過o l...

倍增小結 ST 與 LCA

倍增我是真滴不會 倍增法 英語 binary lifting 顧名思義就是翻倍。能夠使線性的處理轉化為對數級的處理,大大地優化時間複雜度。ps 上次學倍增lca,沒學會,老老實實為了嚴格次小生成樹滾回來重新學 st表 n log n 的預處理與 o 1 的查詢 感性理解一下 對於每次詢問 l,r q...