JDBC詳解(二)

一:Statement與PreparedStatement的注意點sql

  

 

  存在sql注入的危險,若是用戶傳入的id爲「2 or 1=1」,將刪除表中的全部數據。而PreparedStatement有效的防止sql注入(SQl語句在程序運行前已經進行了預編譯,當運行時動態的把參數傳給PreparedStatement時,及時參數裏有敏感字符如:「or 1=1」,數據庫也會做爲一個字段的屬性值來處理而不會做爲一個SQL指令):數據庫

二:批處理(Batch)測試

  

  對於大量的批處理,建議使用Statement,由於PreparedStatement的預編譯空間有限,當數據量特別大時,會發生異常。(測試結果:2萬條數據插入,大概須要2秒半的時間)spa

三:JDBC事務blog

   JDBC的事務默認是自動提交的:事務

  

  代碼沒有截圖完整,在最後的finally中關閉鏈接沒有截圖。此段程序會報錯:編譯

  

  報錯是由於第二次插入參數設置不對。從控制檯看到「第一次插入」打印出來了,是否是第一次的插入成功了呢?然而並無,由於我沒手動這隻了自動提交事務爲false,因此第一次插入和第二次插入是同一個事務。而第二次顯然報錯了,說明沒有執行成功,因此第一次插入也是沒有將數據真的插入到數據庫的。若是咱們將「1」出的代碼註釋掉,那麼第一次插入輸入真的插進去呢?答案是真的插入進去了。由於JDBC事務默認是自動提交事務的,因此若是將「1」處的代碼註釋掉,那麼雖然第二次插入報錯了,第二次沒有插入成功,可是第一次還真的是插入成功了。程序

相關文章
相關標籤/搜索