數據庫的操作是當前系統開發必不可少的開發部分之一,尤其是在現在的大數據時代,數據庫尤為重要。但是你真的懂得Java與數據庫是怎么連接的么?
先給大家一個數據庫連接的簡單實例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package com.java.dbtest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class TestConnection implements DBTest{ public void SelectUser(){ //設定數據庫驅動,數據庫連接地址、端口、名稱,用戶名,密碼 String driverName= "oracle.jdbc.driver.OracleDriver" ; String url= "jdbc:oracle:thin:@localhost:1521:BJPOWERNODE" ; //test為數據庫名稱,1521為連接數據庫的默認端口 String user= "system" ; //aa為用戶名 String password= "bjpowernode" ; //123為密碼 PreparedStatement pstmt = null ; ResultSet rs = null ; //數據庫連接對象 Connection conn = null ; try { //反射Oracle數據庫驅動程序類 Class.forName(driverName); //獲取數據庫連接 conn = DriverManager.getConnection(url, user, password); //輸出數據庫連接 System.out.println(conn); //定制sql命令 String sql = "select * from t_user where user_id = ?" ; //創建該連接下的PreparedStatement對象 pstmt = conn.prepareStatement(sql); //傳遞第一個參數值 root,代替第一個問號 pstmt.setString( 1 , "root" ); //執行查詢語句,將數據保存到ResultSet對象中 rs = pstmt.executeQuery(); //將指針移到下一行,判斷rs中是否有數據 if (rs.next()){ //輸出查詢結果 System.out.println( "查詢到名為【" + rs.getString( "user_id" ) + "】的信息,其密碼為:" + rs.getString( "password" )); } else { //輸出查詢結果 System.out.println( "未查詢到用戶名為【" + rs.getString( "user_id" ) + "】的信息" ); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null ){ rs.close(); } if (pstmt != null ){ pstmt.close(); } if (conn != null ){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args){ new TestConnection().SelectUser(); } } |
在main函數中,右鍵,選擇“Run as”=>"Java Application",就會運行該程序段,在Console中,可以看到運行結果,如果給出一串類似于“oracle.jdbc.driver.T4CConnection@7c242f04”這樣的字符串,就說明你連接成功了。運行結果如圖:
下面我們來簡單解剖一下這段程序。
這段程序是Java連接Oracle數據庫的實例,采用jdbc來完成連接數據庫的操作,所以需要引入ojdbc14.jar。在操作前,首先得先得到數據庫驅動類的對象,通過驅動對象拿到數據庫連接對象。
其中Class.forName(driverName)就是應用類反射機制,加載驅動程序的。DriverManager 類是 JDBC 的管理層,作用于用戶和驅動程序之間。它跟蹤可用的驅動程序,并在數據庫和相應驅動程序之間建立連接。
一般只需要在類中直接使用方法DriverManager.getConnection,即可建立與數據庫的連接
PreparedStatement 接口繼承Statement,是用來執行數據庫操作的類。PreparedStatement在多次調用時的效率要比Statement高很多,所以很多人都主張以PreparedStatement代替Statement。
在接下來的博文中,會詳細介紹一下這點《深入 理解 Statement 和 PreparedStatement》。PreparedStatement可以看做.net中的Command的類。
ResultSet 接口在很多語言中都出現過,它主要來存放查詢到的數據。每次查詢到數據后,Java語言中通常使用next()方法來讀取數據。