java JDBC編程流程步驟
JDBC:Java Data Base Connection
JDBC是用於運行sql語句並從數據庫中獲取新新的java API.
JDBC是用來(讓我們的程序)通過網絡來操作數據庫的,作用非常重要;JDBC技術也是Java核心技術之中的一個。
是使用JDBC驅動程序訪問數據庫的首選方式
通過JDBC操作數據庫——步驟:
第1步:註冊驅動 (僅僅做一次)
第2步:建立連接(Connection)
第3步:創建運行SQL的語句(Statement)
第4步:運行語句
第5步:處理運行結果(ResultSet)
第6步:釋放資源
使用JDBC第一步:載入驅動
註冊驅動有三種方式:
1. Class.forName(“com.mysql.jdbc.Driver”);
推薦這樣的方式,不會對詳細的驅動類產生依賴
2. DriverManager.registerDriver(com.mysql.jdbc.Driver);
會對詳細的驅動類產生依賴
3. System.setProperty(“jdbc.drivers”, “driver1:driver2”);
儘管不會對詳細的驅動類產生依賴;但註冊不太方便。所以非常少使用
使用JDBC第二步:建立連接
通過Connection建立連接,Connection是一個接口類。其功能是與數據庫進行連接(會話)。
建立Connection接口類對象:
Connection conn =DriverManager.getConnection(url, user, password);
當中URL的格式要求爲:
JDBC:子協議:子名稱//主機名:port/數據庫名?屬性名=屬性值&…
如:"jdbc:mysql://localhost:3306/test“
user即爲登錄數據庫的username,如root
password即爲登錄數據庫的密碼,爲空就填””
使用JDBC第三步:創建運行對象
運行對象Statement負責運行SQL語句。由Connection對象產生。
Statement st = connection.createStatement();
Statement接口類還派生出兩個接口類PreparedStatement和CallableStatement,這兩個接口類對象爲我們提供了更加強大的數據訪問功能。
PreparedStatement能夠對SQL語句進行預編譯,這樣防止了 SQL注入 提高了安全性。
PreparedStatement ps=connection.prepareStatement( "update user set id=? where username=?”); ————sql語句中庸 ? 作爲通配符,變量值通過參數設入:ps.setObject(1, object);
而且預編譯結果能夠存儲在PreparedStatement對象中。當多次運行SQL語句時能夠提高效率。
作爲Statement的子類,PreparedStatement繼承了Statement的全部函數。
CallableStatement接口
CallableStatement類繼承了PreparedStatement類,他主要用於運行SQL存儲過程。
在JDBC中運行SQL存儲過程須要轉義。
JDBC API提供了一個SQL存儲過程的轉義語法:
{call<procedure-name>[<arg1>,<arg2>, ...]}
procedure-name:是所要運行的SQL存儲過程的名字
[<arg1>,<arg2>, ...]:是相相應的SQL存儲過程所須要的參數
使用JDBC第四步:運行SQL語句
運行對象Statement 或 PreparedStatement 提供兩個經常使用的方法來運行SQL語句。
executeQuery(Stringsql),該方法用於運行實現查詢功能的sql語句。返回類型爲ResultSet(結果集)。
如:ResultSet rs =st.executeQuery(sql);
executeUpdate(Stringsql),該方法用於運行實現增、刪、改功能的sql語句,返回類型爲int,即受影響的行數。
如:int flag = st.executeUpdate(sql);
使用JDBC第五步:處理運行結果
ResultSet對象
ResultSet對象負責保存Statement運行後所產生的查詢結果。
結果集ResultSet是通過遊標來操作的。
遊標就是一個可控制的、能夠指向隨意一條記錄的指針。
有了這個指針我們就能輕易地指出我們要對結果集中的哪一條記錄進行改動、刪除,或者要在哪一條記錄之前插入數據。一個結果集對象中僅僅包括一個遊標。
另外,藉助ResultSetMetaData ,可以將數據表的結構信息都查出來。
ResultSetMetaData rsmd= resultSet.getMetaData();
使用JDBC 第六步——釋放資源
數據庫資源不關閉,其佔用的內存不會被釋放,徒耗資源,影響系統。