日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

三、PreparedStatement对象(重点)

發布時間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 三、PreparedStatement对象(重点) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、PreparedStatement 特點:

PreparedStatement 接口繼承Statement 接口
PreparedStatement 效率高于Statement
PreparedStatement 支持動態綁定參數
PreparedStatement 具備SQL 語句預編譯能力
使用PreparedStatement 可防止出現SQL 注入問題

二、PreparedStatement的預編譯能力

2.1什么是預編譯

  2.1.1SQL 語句的執行步驟

語法和語義解析
優化sql 語句,制定執行計劃
執行并返回結果

  但是很多情況,我們的一條sql 語句可能會反復執行,或者每次執行的時候只有個別的值不同(比如select 的where 子句值不同,update 的set 子句值不同,insert 的values 值不同)。如果每次都需要經

過上面的詞法語義解析、語句優化、制定執行計劃等,則效率就明顯不行了。

  所謂預編譯語句就是將這類語句中的值用占位符替代,可以視為將sql 語句模板化或者說參數化。

  預編譯語句的優勢在于:一次編譯、多次運行,省去了解析優化等過程;此外預編譯語句能防止sql 注入

  2.1.2 解析過程

  (1)硬解析
    在不開啟緩存執行計劃的情況下,每次SQL 的處理都要經過:語法和語義的解析,優化器處理SQL,生成執行計劃。整個過程我們稱之為硬解析。

  (2) 軟解析
    如果開啟了緩存執行計劃,數據庫在處理sql 時會先查詢緩存中是否含有與當前SQL語句相同的執行計劃,如果有則直接執行該計劃。

三、預編譯方式

  開始數據庫的日志:

show VARIABLES like '%general_log%'
set GLOBAL general_log = on
set GLOBAL log_output='table'

  3.1 依賴數據庫驅動完成預編譯

    如果我們沒有開啟數據庫服務端編譯,那么默認的是使用數據庫驅動完成SQL 的預編譯處理。

  3.2 依賴數據庫服務器完成預編譯

    我們可以通過修改連接數據庫的URL 信息,添加useServerPrepStmts=true 信息開啟服務端預編譯。

總結

以上是生活随笔為你收集整理的三、PreparedStatement对象(重点)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。