JDBC(Java DataBase Connectivity) Java數據庫鏈接,其實就是利用java語言/程序鏈接並訪問數據庫的一門技術,以前咱們能夠經過CMD或者navicat等工具鏈接數據庫,但在企業開發中,更多的是經過程序(java程序)鏈接並訪問數據庫,經過java程序訪問數據庫,就要用到JDBC這門技術。java
(1)註冊數據庫驅動
Class.forName(com.mysql.jdbc.Driver);
(2)獲取數據庫鏈接
Connection conn=DirverManager.getConnection
("jdbc:mysql://localhost:3306/test?characterEncoding","root","root")
(3)獲取傳輸器
Statement stat = conn.createStatement();
(4)發送SQL到服務器執行並返回執行結果
String sql ="select * from account";
ResultSet rs = stat.executeQuery(sql);
(5)處理結果
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
double money = rs.getDouble("money");
System.out.println(id+":"+name+":"+money);}
(6)釋放資源
rs.close();
stat.close();
conn.close();
System.out.println("Testjdbc.main()....");mysql
(1)註冊數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
所謂的註冊驅動,就是讓JDBC程序加載mysql驅動程序,並管理驅動
驅動程序實現了JDBC API定義的接口以及數據庫服務器的交互的功能,加載驅動是爲了方便使用這些功能。
(2)獲取鏈接數據庫的URL
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/test?characterEncoding","root","root");
DriverManager.getConnection()用於獲取數據鏈接,返回的Connection鏈接對象是JDBC程序鏈接數據庫相當重要的一個對象。
參數1:"jdbc:mysql://localhost:3306/test"是鏈接數據庫的URL,用於指定訪問哪個位置上的數據庫服務器及服務器中的哪個數據庫,具體爲:
當鏈接本地數據庫,而且端口爲3306,能夠簡寫爲以下形式:
jdbc:mysql:///testsql
(3)Statement傳輸器對象
Statement stat = conn.createStatement();
該方法返回用於向數據庫服務器發送sql語句的statement傳輸器對象
該對象提供了發送sql的方法:
executeQuery(String sql)--
用於向數據庫發送查詢類型的sql語句,返回一個ResultSet對象中
executeUpdate(String sql)--
用於向數據庫發送更新(增長,刪除,修改)類型的sql語句,返回一個int值,表示影響的行數
(4)ResultSet結果集對象
ResultSet對象用於封裝sql語句查詢的結果,也是一個很是重要的對象。該對象上提供了遍歷數據及獲取數據的方法。
--遍歷數據行的方法--
next()-使指向數據行的箭頭向下移動一行,並返回一個布爾類型的結果,true表示箭頭指向了一行數據,false表示箭頭沒有指向任何數據(後面也沒有數據了)
--獲取數據的方法--數據庫
getInt(int columnIndex) getInt(String columnLable) getString(int columnIndex) getString(String columnLable) getDouble(int columnIndex) getDouble(String columnLable) getObject(int columnIndex) getObjct(String columnLable)
--釋放資源--安全
rs.close(); stat.close(); conn.close();
新增:往simulation表中添加一個名稱爲john,money爲3500的記錄服務器
@Test public void testInsert() { Connection conn = null; Statement stat = null; ResultSet rs = null; try{ //註冊驅動並獲取鏈接 conn = jdbcUtil.getConn(); //獲取傳輸器 stat = conn.createStatement(); //發送sql語句到服務器執行,並返回執行結果 String sql = "insert into simulation values(null,"john",3500)"; //處理結果 System.out.println("影響行數:"+rows); }catch(Exception e){ e.printStackTrace(); }finally{ //經過jdbcUtil工具類中的close方法釋放資源 jdbcUtil.close(conn,stat,rs); } }
修改:將simulation表中名稱爲john的記錄,money修改成1500元工具
@Test public void testUpdate(){ Connection conn = null; Statement stat = null; ResultSet rs = null; try{ //經過工具類註冊數據庫並獲取鏈接 conn = jdbcUtil.getConn(); //獲取傳輸器 stat = conn.createStatement(); //發送sql語句到服務器執行,並返回執行結果 String sql = "update account set money=1500 where name = 'john'"; //處理結果 System.out.println("影響行數"+rows); } catch(Exeption e){ e.printStackTrace(); }finally{ //經過工具類中的close方法釋放資源 jdbcUtil.close(conn,stat,rs); } }
查詢:查詢account表中id爲1的記錄spa
@Test public void testFindById(){ Connection conn = null; Statement stat = null; ResultSet rs = null; try{ //經過工具類註冊驅動並獲取鏈接 conn = jdbcUtil.getConn(); //獲取傳輸器 stat = conn.createStatement(); //執行sql語句,返回執行結果 String sql = "select * from account where id=1"; //處理結果 if(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); double money = rs.getDouble("money"); System.out.println(id+":"+name+":"+money); }catch(Exception e){ e.printStackTrace(); }finally{ jdbcUtil.close(conn,stat,rs); } }
刪除:刪除account表中名稱爲john的記錄code
@Test public void testDelete(){ Connection conn =null; Statement stat = null; ResultSet rs = null; try{ //經過jdbcUtil工具類註冊驅動並獲取鏈接 conn = jdbcUtil.getConn(); //獲取傳輸器 stat = conn.createStatement(); //發送sql語句到服務器執行,並返回執行結果 String sql = "delete from account where name='john'"; int rows = stat.executeUpdate(sql); //處理結果 System.out.println("影響行數:"+rows); }catch(Exception e){ e.printStackTrace(); }finally{ //經過jdbcUtil工具類中的close方法釋放資源 jdbcUtil.close(conn,stat,rs); } }
在上面的增刪改查操做中,使用的是Statement傳輸器對象,而在開發中咱們用的更多的傳輸器對象是PreparedStatement對象,PreparedStatement是Statement的子接口,比Statement更加安全,而且可以提升程序執行的效率。對象
總的來講JDBC就是Java數據庫鏈接,用來規範客戶端程序如何來訪問數據庫的,提供了諸如查詢和更新數據庫中數據的方法,咱們一般說的JDBC是面向關係型數據庫的。