亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

通州北大青鳥(niǎo):Statement和PreparedStatement之間的區(qū)別

Statement和PreparedStatement之間的區(qū)別
1.PreparedStatement是預(yù)編譯的,對(duì)于批量處理可以大大提高效率. 也叫JDBC存儲(chǔ)過(guò)程2.使用 Statement 對(duì)象。在對(duì)數(shù)據(jù)庫(kù)只執(zhí)行一次性存取的時(shí)侯,用 Statement 對(duì)象進(jìn)行
處理。PreparedStatement 對(duì)象的開(kāi)銷(xiāo)比Statement大,對(duì)于一次性操作并不會(huì)帶來(lái)額外的好處。
3.statement每次執(zhí)行sql語(yǔ)句,相關(guān)數(shù)據(jù)庫(kù)都要執(zhí)行sql語(yǔ)句的編譯,preparedstatement是預(yù)編譯得,   preparedstatement支持批處理
4.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的區(qū)別在于,后者使用了PreparedStatement對(duì)象,而前者是普通的Statement對(duì)象。PreparedStatement對(duì)象不僅包含了SQL語(yǔ)句,而且大多數(shù)情況下這個(gè)語(yǔ)句已經(jīng)被預(yù)編譯過(guò),因而當(dāng)其執(zhí)行時(shí),只需DBMS運(yùn)行SQL語(yǔ)句,而不必先編譯。當(dāng)你需要執(zhí)行Statement對(duì)象多次的時(shí)候,PreparedStatement對(duì)象將會(huì)大大降低運(yùn)行時(shí)間,當(dāng)然也加快了訪問(wèn)數(shù)據(jù)庫(kù)的速度。
這種轉(zhuǎn)換也給你帶來(lái)很大的便利,不必重復(fù)SQL語(yǔ)句的句法,而只需更改其中變量的值,便可重新執(zhí)行SQL語(yǔ)句。選擇PreparedStatement對(duì)象與否,在于相同句法的SQL語(yǔ)句是否執(zhí)行了多次,而且兩次之間的差別僅僅是變量的不同。如果僅僅執(zhí)行了一次的話,它應(yīng)該和普通的對(duì)象毫無(wú)差異,體現(xiàn)不出它預(yù)編譯的優(yōu)越性。5.執(zhí)行許多SQL語(yǔ)句的JDBC程序產(chǎn)生大量的Statement和PreparedStatement對(duì)象。通常認(rèn)為PreparedStatement對(duì)象比Statement對(duì)象更有效,特別是如果帶有不同參數(shù)的同一SQL語(yǔ)句被多次執(zhí)行的時(shí)候。PreparedStatement對(duì)象允許數(shù)據(jù)庫(kù)預(yù)編譯SQL語(yǔ)句,這樣在隨后的運(yùn)行中可以節(jié)省時(shí)間并增加代碼的可讀性。

然而,在Oracle環(huán)境中,開(kāi)發(fā)人員實(shí)際上有更大的靈活性。當(dāng)使用Statement或PreparedStatement對(duì)象時(shí),Oracle數(shù)據(jù)庫(kù)會(huì)緩存SQL語(yǔ)句以便以后使用。在一些情況下,由于驅(qū)動(dòng)器自身需要額外的處理和在Java應(yīng)用程序和Oracle服務(wù)器間增加的網(wǎng)絡(luò)活動(dòng),執(zhí)行PreparedStatement對(duì)象實(shí)際上會(huì)花更長(zhǎng)的時(shí)間。

然而,除了緩沖的問(wèn)題之外,至少還有一個(gè)更好的原因使我們?cè)谄髽I(yè)應(yīng)用程序中更喜歡使用PreparedStatement對(duì)象,那就是安全性。傳遞給PreparedStatement對(duì)象的參數(shù)可以被強(qiáng)制進(jìn)行類(lèi)型轉(zhuǎn)換,使開(kāi)發(fā)人員可以確保在插入或查詢數(shù)據(jù)時(shí)與底層的數(shù)據(jù)庫(kù)格式匹配。

當(dāng)處理公共Web站點(diǎn)上的用戶傳來(lái)的數(shù)據(jù)的時(shí)候,安全性的問(wèn)題就變得極為重要。傳遞給PreparedStatement的字符串參數(shù)會(huì)自動(dòng)被驅(qū)動(dòng)器忽略。最簡(jiǎn)單的情況下,這就意味著當(dāng)你的程序試著將字符串“D'Angelo”插入到VARCHAR2中時(shí),該語(yǔ)句將不會(huì)識(shí)別第一個(gè)“,”,從而導(dǎo)致悲慘的失敗。幾乎很少有必要?jiǎng)?chuàng)建你自己的字符串忽略代碼。

在Web環(huán)境中,有惡意的用戶會(huì)利用那些設(shè)計(jì)不完善的、不能正確處理字符串的應(yīng)用程序。特別是在公共Web站點(diǎn)上,在沒(méi)有首先通過(guò)PreparedStatement對(duì)象處理的情況下,所有的用戶輸入都不應(yīng)該傳遞給SQL語(yǔ)句。此外,在用戶有機(jī)會(huì)修改SQL語(yǔ)句的地方,如HTML的隱藏區(qū)域或一個(gè)查詢字符串上,SQL語(yǔ)句都不應(yīng)該被顯示出來(lái)。

 

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章
主站蜘蛛池模板: 欧美成a人免费观看久久 | 性欧美videos精品 | 97视频免费播放观看在线视频 | 久久综合亚洲一区二区三区 | аⅴ资源天堂8在线 | 成人性一级视频在线观看 | 亚洲无吗视频 | 欧美xxxx4khd超高清 | 一级做a爰性色毛片 | 日本免费视| 国产成人a毛片 | 国产精品久久不卡日韩美女 | 欧美黑人巨大xxxxxxxx | 在线播放成人高清免费视频 | 一级成人a毛片免费播放 | 可以免费看黄的网站 | 欧美一区精品二区三区 | 午夜欧美精品久久久久久久久 | 91色久| 久久久久久免费精品视频 | 男女配种猛烈免费视频 | 大量真实偷拍情侣视频野战 | 一级特黄爽大片刺激 | 日本三级香港三级三级人!妇久 | 美女日韩在线观看视频 | 兔子先生节目在线观看免费 | 欧美精品hdvdeosex4k | 久久99国产精一区二区三区! | 亚洲精品欧洲久久婷婷99 | 成人免费毛片观看 | 男人天堂视频在线 | 日日摸日日碰夜夜爽久久 | 一区二区三区免费看 | 日本精品一区二区三区在线视频一 | 韩国主播19福利视频在线 | 久久亚洲精品tv | 久久厕所| 一级做a爰片久久毛片鸭王 一级做a爰全过程免费视频毛片 | 在线视频中文 | 91玖玖| 久久精品国产亚洲网址 |