歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java JDBC基礎學習小結

Java JDBC基礎學習小結

日期:2017/3/1 9:17:20   编辑:Linux編程

JDBC是一個Java應用程序接口,作用是封裝了對數據庫的各種操作。JDBC由類和接口組成,使用Java開發數據庫應用都需要4個主要的接口:Driver、Connection、Statement、ResultSet,這些接口定義了使用SQL訪問數據庫的一般架構。  

1、JDBC相關類和API

JDBC是一個Java應用程序接口,作用是封裝了對數據庫的各種操作。JDBC由類和接口組成,使用Java開發數據庫應用都需要4個主要的接口:Driver、Connection、Statement、ResultSet,這些接口定義了使用SQL訪問數據庫的一般架構。

  • Driver接口

Driver接口是所有JDBC程序必須實現的接口,該接口專門提供給數據庫廠商使用。編寫JDBC程序時,必須制定數據庫驅動程序或類庫加載到項目classpath中。

  • DriverManager類

DriverManager用於加載JDBC驅動並創建與數據庫的連接。其中定義了2個重要的靜態方法:

1 DriverManager.registerDriver(Driver driver) // 用於向DeriverManager注冊給定的JDBC驅動程序
2 DriverManager.getConnection(String url, String user, String pwd) // 建立與數據庫的連接,返回表示連接的Connection對象
  • Connection接口

Connection代表與數據庫的連接,其中定義了一系列的方法:

1 Connection.getMetaData(); // 返回表示數據庫元數據的DatabaseMetaData對象
2 Connection.createStatement(); // 創建一個Statement對象
3 Connection.prepareStatement(String sql); // 創建一個PreparedStatement對象
4 Connection.prepareCall(String sql); // 創建一個CallableStatement對象來調用數據庫存儲過程
  • Statement接口

Statement接口用於向數據庫發送SQL語句。

1 Statement.execute(String sql); // 執行各種SQL語句,返回一個boolean類型值,true表示執行的SQL語句具備查詢結果,可通過Statement.getResultSet()方法獲取
2 Statement.executeUpdate(String sql); // 執行SQL中的insert/update/delete語句,返回一個int值,表示受影響的記錄的數目
3 Statement.executeQuery(String sql); // 執行SQL中的select語句,返回一個表示查詢結果的ResultSet對象

  • ResultSet接口
1 ResultSet.next(); // 將游標由當前位置移動到下一行
2 ResultSet.getString(String columnName); // 獲取指定字段的String類型值
3 ResultSet.getString(int columnIndex); // 獲取指定索引的String類型值
4 ResuleSet.previous(); // 將游標由當前位置移動到上一行

2、程序示例

數據庫IP 192.168.1.150,數據庫名稱為test,數據表名稱persion,表結構為:

表中原有數據

JDBC連接MySQL程序示例

 1 package server;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.Statement;
 7 
 8 public class DemoJDBC {
 9     public static void main(String[] args) throws Exception {
10         // 加載驅動類
11         Class.forName("com.mysql.jdbc.Driver");
12         
13         // 通過DriverManager獲取數據庫連接
14         String url = "jdbc:mysql://192.168.1.150/test";
15         String user = "teamtalk";
16         String password = "123456";
17         Connection connection = (Connection) DriverManager.getConnection(
18                 url, user, password);
19         
20         // 通過Connection對象獲取Statement對象、Statement執行SQL語句
21         Statement statement = (Statement) connection.createStatement();  
22         ResultSet resultSet = statement.executeQuery("select * from persion");
23         
24         // 操作ResultSet結果集
25         while (resultSet.next()) {
26             // 第一種獲取字段方式
27             System.out.println(resultSet.getString(1) + " " + 
28                     resultSet.getString(2) + " " + resultSet.getString(3));
29             System.out.print("---- ");
30             // 第二種獲取字段方式
31             System.out.println(resultSet.getString("id") + " " +
32                     resultSet.getString("name") + " " + resultSet.getString("age"));
33         }
34         
35         int ret = statement.executeUpdate("insert persion (name, age) value ('bobo', 24)");
36         if (ret > 0) {
37             System.out.println("  insert ok");
38             resultSet = statement.executeQuery("select * from persion");
39   
40             while (resultSet.next()) {
41                 System.out.println(resultSet.getString(1) + " " + 
42                         resultSet.getString(2) + " " + resultSet.getString(3));
43             }
44         }
45         
46         // 關閉數據庫連接
47         resultSet.close();
48         statement.close();
49         connection.close();
50     }
51 }

程序運行結果為:

數據表中數據

JDBC使用PreparedStatement進行數據插入操作程序示例

 1 package server;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.Statement;
 7 
 8 import com.mysql.jdbc.PreparedStatement;
 9 
10 public class DemoJDBC {
11     public static void main(String[] args) throws Exception {
12         // 加載驅動類
13         Class.forName("com.mysql.jdbc.Driver");
14     
15         // 通過DriverManager獲取數據庫連接
16         String url = "jdbc:mysql://192.168.1.150/test";
17         String user = "teamtalk";
18         String password = "123456";
19         Connection connection = (Connection) DriverManager.getConnection(
20                 url, user, password);
21         
22         PreparedStatement statement = (PreparedStatement) connection.prepareStatement(
23                 "insert persion (name, age) value (?, ?)");
24         statement.setString(1, "hdu");
25         statement.setInt(2, 21);
26         statement.executeUpdate();
27         
28         ResultSet resultSet = statement.executeQuery("select * from persion");
29         // 操作ResultSet結果集
30         while (resultSet.next()) {
31             // 第一種獲取字段方式
32             System.out.println(resultSet.getString(1) + " " + 
33                     resultSet.getString(2) + " " + resultSet.getString(3));
34         }
35 
36         // 關閉數據庫連接
37         resultSet.close();
38         statement.close();
39         connection.close();
40     }
41 }

程序輸出為:

數據庫中數據為:

3、小結

當程序遠程訪問mysql時,不能使用root賬號和密碼登錄,這樣是為了mysql的安全考慮,可以先新建一個mysql賬號用來測試。

如果遠程MySQL主機是CentOS7的話,需要展暫時關閉防火牆,使用命令 systemctl stop firewalld.service。

JDBC是一套操作數據庫的接口,相當於數據庫的抽象層,我們可以通過它來操作常用的數據庫,進行SQL操作。當我們寫程序時,對於一個表(user),可以新建其對應的類(User),其提供各種get/set方法;然後新建一個數據庫操作工具類(JDBCUtils),其提供與數據庫建立連接、關閉連接方法;最後新建一個對表的操作類(UserDao),其封裝了對表User的添加、刪除、查詢和更新等操作。

Copyright © Linux教程網 All Rights Reserved