一、JDBC簡介
JDBC(Java DataBase Connectivity)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一的訪問,它由一組用Java語言編寫的類和接口組成。使用JDBC訪問數據庫的基本步驟如下:
1、加載JDBC驅動程序
2、建立數據庫連接
3、創建操作數據庫SQL的對象
4、執行語句並分析執行結果
5、關閉連接
在使用JDBC操作數據庫之前,我們需要先向項目中加入JDBC驅動文件,將其放到項目中的lib文件夾下即可。
放入JDBC驅動文件(下)后,eclipse會自動將其加載到項目中(上)。
二、使用JDBC訪問MySQL數據庫
我們在MySQL數據庫中建立了test庫,test庫中含有test表,表中的數據如下:
1、通過Statement對象執行靜態SQL語句
1 package test; 2 3 import java.sql.*; //導入Java提供的數據庫操作包 4 5 public class MySql { 6 public static void main(String[] args) { 7 8 String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"; //數據庫連接地址,此處表示連接本機3306端口的MySQL數據庫里的test庫,使用上海時區 9 Connection con; 10 Statement statement; 11 ResultSet rs; 12 int i; 13 String string; 14 15 try { 16 Class.forName("com.mysql.cj.jdbc.Driver"); //加載JDBC驅動程序 17 con = DriverManager.getConnection(url, "root", "root"); //建立與數據庫的連接,后兩個參數分別為賬號和密碼 18 statement = con.createStatement(); //創建Statement對象 19 20 rs = statement.executeQuery("select * from test"); //執行sql查詢語句,返回結果集 21 System.out.println("查詢結果為:"); 22 while(rs.next()) { //循環操作結果集 23 string = rs.getString("id") + "——" + rs.getString("name"); 24 System.out.println(string); 25 } 26 27 i = statement.executeUpdate("insert into test value(4,'wxc')"); //執行sql更新語句,返回影響行數 28 System.out.println("影響行數為:" + i); 29 30 rs.close(); //關閉結果集 31 statement.close(); //關閉Statement對象 32 con.close(); //關閉與數據庫的連接 33 } catch (Exception e) { 34 e.printStackTrace(); 35 } 36 } 37 }
執行結果如下:
2、通過PreparedStatement對象執行預編譯SQL語句
1 public class MySql { //大部分操作與執行靜態SQL語句類似,相同部分此處不再贅述 3 public static void main(String[] args) { 4 5 String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"; 6 Connection con; 7 String sql; 8 PreparedStatement preparedStatement; 9 ResultSet rs; 10 int i; 11 String string; 12 13 try { 14 Class.forName("com.mysql.cj.jdbc.Driver"); 15 con = DriverManager.getConnection(url, "root", "root"); 16 17 sql = "select * from test where id = ?"; //編寫sql查詢語句,問號為占位符,之后會被參數取代 18 preparedStatement = con.prepareStatement(sql); //創建PreparedStatement對象 19 preparedStatement.setString(1, "3"); //設置參數,第一個參數表示選擇第幾個占位符,第二個參數表示要輸入的值 20 rs = preparedStatement.executeQuery(); 21 System.out.println("查詢結果為:"); 22 if(rs.next()) { 23 string = rs.getString("id") + "——" + rs.getString("name"); 24 System.out.println(string); 25 } 26 27 sql = "delete from test where id = ?"; 28 preparedStatement = con.prepareStatement(sql); 29 preparedStatement.setString(1, "3"); 30 i = preparedStatement.executeUpdate(); 31 System.out.println("影響行數為:" + i); 32 33 rs.close(); 34 preparedStatement.close(); 35 con.close(); 36 } catch (Exception e) { 37 e.printStackTrace(); 38 } 39 } 40 }
執行結果如下: