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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql语句的进化--原始篇

發布時間:2025/7/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql语句的进化--原始篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.JDBC

1)JDBC(Java Data Base Connectivity,java數據庫連接)是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問。

2)它由一組用Java語言編寫的類和接口組成,是一個獨立于特定數據庫管理系統、通用的sql數據庫存儲和操作的公共接口。

3)JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。

?

2.JDBC常用(重要)類/接口

1)java.sql.Driver接口:

該接口是所有JDBC驅動程序需要實現的接口,這個接口是提供給數據庫廠商使用的,不同的數據庫廠商提供不同的實現。

注:在程序中不需要直接去訪問實現了Driver接口的類,而是驅動程序管理器類去調用這些Driver實現.

2)DriverManager類:

用來創建連接,它本身就是一個創建Connection的工廠,設計的時候使用的就是Factory模式,這個接口也是提供給數據庫廠商使用的,各數據庫廠商需要實現它。

3)Connection接口

根據提供的不同驅動產生不同的連接。

4)Statement接口

用來發送SQL語句

5)Resultset接口

用來接收查詢語句返回的查詢結果

?

3.JDBC應用步驟

1)注冊加載一個驅動

2)創建數據庫連接(Connection)

3)創建statement,發送sql語句

4)執行sql語句

5)處理sql結果

6)關閉statement和connection

?

4.訪問數據庫

在java.sql包中有3個接口分別定義了對數據庫的調用的不同方式:

1)statement

1 創建Statement對象 2 Statement sm=conn.createStatement(); 3 4 執行數據查詢語句(select) 5 sm.executeQuery(sql); 6 7 執行數據更新語句(delete、update、insert、drop等) 8 sm.executeUpdate(sql);

2)prepatedStatement

1 創建PreparedStatement對象 2 String sql="INSERT INTO user (id,name) VALUES (?,?)"; 3 PreparedStatement ps=conn.prepareStatement(sql); 4 ps.setInt(1,1); 5 ps.setString(2,"admin"); 6 7 執行數據查詢語句 8 ResultSet rs=ps.executeQuery(); 9 10 執行數據更新語句 11 int c=ps.executeUpdate();

PreparedStatement與Statement比較

  • 使用PreparedStatement,代碼的可讀性和可維護性比Statement高
  • Statement不安全,PreparedStatement比較安全,能有效解決Sql注入的問題。
  • PreparedStatement能最大可能提高性能。

? ? ?DBServer會對預編譯語句提供性能優化。因為預編譯語句有可能被重復調用,所以語句在被DBServer的編譯器編譯后的執行代碼被緩存下來,那么下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中就會得到執行。?在statement語句中,即使是相同操作但因為數據內容不一樣,所以整個語句本身不能匹配,沒有緩存語句的意義。事實是沒有數據庫會對普通語句編譯后的執行代碼緩存。這樣每執行一次都要對傳入的語句編譯一次。

?

3)CallableStatement

當不直接使用SQL語句,而是調用數據庫中的存儲過程時,要用到Callable Statement.

CallableStatement從PreparedStatement繼承。

創建CallableStatement對象 String sql="{call insert_users(?,?)}";
調用存儲過程 CallableStatement st
=conn.prepareCall(sql); st.setInt(1,1); st.setString(2,"admin");執行 st.execute();

?

5.處理執行結果

查詢語句,返回記錄集ResultSet

更新語句,返回數字,表示該更新影響的記錄數。

?

ResultSet對象以邏輯表格的形式封裝了執行數據庫操作的結果集,ResultSet接口由數據庫廠商實現。

ResultSet對象維護了一個指向當前數據行的游標,初始的時候,游標在第一行之前,可以通過ResultSet對象的next()方法移動到下一行。

ResultSet接口常用的方法:

next():將游標往后移動一行,如果成功返回true;否則返回false。

getXXX(String name):返回當前游標下某個字段的值。

?

6.JDBC事務處理

在JDBC中,事務默認是自動提交的,每次執行一個SQL語句時,如果執行成功,就會向數據庫自己提交,而不能回滾。

1 #取消自動提交事務: 2 conn.setAutoCommit(false); 3 #在所有的SQL語句都成功執行之后,調用commit()方法提交事務 4 conn.commit(); 5 #在出現異常時,調用rollback()方法回滾事務,一般再在catch模塊中執行回滾操作 6 conn.rollback();

注:可以通過Connection的getAutoCommit()方法來獲得當前事務的提交方式。

?

轉載于:https://www.cnblogs.com/zhangchengzhangtuo/p/5616563.html

總結

以上是生活随笔為你收集整理的sql语句的进化--原始篇的全部內容,希望文章能夠幫你解決所遇到的問題。

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