欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

mysql JDBC總結

系統 1943 0

今天復習了下jdbc操作數據庫,其實通過復習,感覺對類的熟悉和方法的運用都是小事,畢竟有API都可以查得到。
  關鍵是一些設計,

1、  比如:

  Class.forName("");這個是用來加載驅動,獲取driver實例,并在加載的過程中注冊到了DriverManager中,由后者去管理。

? ? 所以:在DriverManager.getConnection()時,發生的操作有:Drivermanager查找已經注冊的列表,然后根據url去對應,最后通過driver獲取數據庫連接,假如有注冊的重復的驅動,默認最先匹配的那個驅動為正確結果。在DriverManager中提供了關于一些driver的管理機制,包括重復的一些處理。

2、 PreparedStatement,Statement

兩者的區別:前者相當于sql預編譯,在程序執行的時候已經把sql編譯好,盡管它可以動態傳參,這也提高了執行效率。

??     前者還可以防止sql注入

      ?如果基本數據庫和驅動程序在語句提交之后仍保持這些語句的打開狀態,則同一個 PreparedStatement 可執行多次。如果這一點不成立,那么試圖通過使用 ? ? ? ? ? ? ? ? ? ? ? PreparedStatement對象代替 Statement 對象來提高性能是沒有意義的。?

示例:

      
        1
      
       pstmt.setString(1, "Hi"
      
        ); 


      
      
        2
      
      
        for
      
       (
      
        int
      
       i = 0; i < 10; i++
      
        ) { 


      
      
        3
      
       pstmt.setInt(2
      
        , i); 


      
      
        4
      
      
        int
      
       rowCount =
      
         pstmt.executeUpdate(); 


      
      
        5
      
       } 
    

?

3、ResultSet提供了很好的結果集管理機制,主要實現了java.sql.ResultSet接口,

? 比如查看結果集有幾行幾列,查看結果集的列名,查看結果集最后一行是否為空等等。

4、關于一些長字段的輸入和輸出問題,見代碼。

      
        for
      
      
        (;;);



mt 
      
      =
      
         con.createStatement(); 

ResultSet r 
      
      = stmt.executeQuery("SELECT x FROM Table2"
      
        ); 


      
      
        //
      
      
         現在以 4K 塊大小獲取列 1 結果: 
      
      
        byte
      
       buff = 
      
        new
      
      
        byte
      
      [4096
      
        ]; 


      
      
        while
      
      
         (r.next()) { 

Java.io.InputStream fin 
      
      = r.getAsciiStream(1
      
        ); 


      
      
        for
      
      
         (;;) { 


      
      
        int
      
       size =
      
         fin.read(buff); 


      
      
        if
      
       (size == -1) { 
      
        //
      
      
         到達流末尾 
      
      
        break
      
      
        ; 

} 


      
      
        //
      
      
         將新填充的緩沖區發送到 ASCII 輸出流: 
      
      

output.write(buff, 0
      
        , size); 

} 

}
      
    
      java.io.File file = 
      
        new
      
       java.io.File("/tmp/data"
      
        ); 


      
      
        int
      
       fileLength =
      
         file.length(); 

java.io.InputStream fin 
      
      = 
      
        new
      
      
         java.io.FileInputStream(file); 

java.sql.PreparedStatement pstmt 
      
      =
      
         con.prepareStatement( 


      
      "UPDATE Table5 SET stuff = ? WHERE index = 4"
      
        ); 

pstmt.setBinaryStream (
      
      1
      
        , fin, fileLength); 

pstmt.executeUpdate(); 
      
    

數據庫針對長字段提供了三種流機制:

getBinaryStream
getAsciiStream
getUnicodeStream

其中for(;;)是無限循環的意思..

?關于為什么preparedStatement比statement,同一個sql假如執行N遍,preparedStatement只進行一次編譯,而statement需要編譯N次

mysql JDBC總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美日韩精品久久奇米色影视 | www.奇米第四色 | 天天色天天射天天操 | 无遮挡羞羞视频 | 狠狠色丁香婷婷综合橹不卡 | 一区二区三区四区不卡视频 | 亚洲精品乱码久久久久久蜜桃91 | 97成人精品 | 波多野吉衣在线观看 | 国产精品免费一级在线观看 | 久久一区二区三区四区 | 成人黄色在线视频 | 国产精品99久久久久久动医院 | 日本免费黄色 | 久草福利在线视频 | 国产福利不卡视频在免费播放 | 亚洲成人精品在线观看 | 犬夜叉在线观看 | 色婷婷综合久久久久中文 | 久久久久久久国产精品毛片 | 五月激情小说 | 五月天婷婷网亚洲综合在线 | 亚洲欧美日韩高清一区二区三区 | 国产成人精品日本亚洲麻豆 | 青草香蕉精品视频在线观看 | 中文字幕乱码一区二区三区 | 天堂中文资源在线8 | 精品国产九九 | 久爱网 | 日本高清视频在线播放 | 久久久久无码国产精品一区 | 久久久久成人精品免费播放动漫 | 国产成人a亚洲精品 | 亚洲精品乱码久久久久久9色 | 中文字幕在线视频日本 | 久草视频在线播放 | 午夜亚洲| 亚洲欧洲精品成人久久奇米网 | 免费观看呢日本天堂视频 | 草草视频在线观看 | 欧美特级黄色 |