362、Java中級17 -【JDBC】 2020.06.27

1、JDBC

JDBC (Java DataBase Connection) 是通過JAVA訪問數據庫

所以需要對數據庫有基本的理解和應用

2、爲項目導入mysql-jdbc的jar包

訪問MySQL數據庫需要用到第三方的類,這些第三方的類,都被壓縮在一個叫做Jar的文件裏。
爲了代碼能夠使用第三方的類,需要爲項目導入mysql的專用Jar包。
該包mysql-connector-java-5.0.8-bin.jar可以在右邊下載
通常都會把項目用到的jar包統一放在項目的lib目錄下,在本例就會放在
E:\project\j2se\lib 這個位置
然後在eclipse中導入這個jar包

導包步驟: 右鍵project->property->java build path->libaries->add external jars
在這裏插入圖片描述

3、初始化驅動

通過Class.forName(“com.mysql.jdbc.Driver”);
初始化驅動類com.mysql.jdbc.Driver
就在 mysql-connector-java-5.0.8-bin.jar中
如果忘記了第一個步驟的導包,就會拋出ClassNotFoundException

Class.forName是把這個類加載到JVM中,加載的時候,就會執行其中的靜態初始化塊,完成驅動的初始化的相關工作。
在這裏插入圖片描述

package jdbc;
   
public class TestJDBC {
    public static void main(String[] args) {
           
        //初始化驅動
        try {
            //驅動類com.mysql.jdbc.Driver
            //就在 mysql-connector-java-5.0.8-bin.jar中
            //如果忘記了第一個步驟的導包,就會拋出ClassNotFoundException
            Class.forName("com.mysql.jdbc.Driver");
              
            System.out.println("數據庫驅動加載成功 !");
   
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
           
    }
}

4、建立與數據庫的連接

建立與數據庫的Connection連接
這裏需要提供:
數據庫所處於的ip:127.0.0.1 (本機)
數據庫的端口號: 3306 (mysql專用端口號)
數據庫名稱 how2java
編碼方式 UTF-8
賬號 root
密碼 admin

注: 這一步要成功執行,必須建立在mysql中有數據庫how2java的基礎上,如果沒有,點擊創建數據庫查看如何進行數據庫的創建。

package jdbc;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
  
public class TestJDBC {
    public static void main(String[] args) {
  
        try {
            Class.forName("com.mysql.jdbc.Driver");
  
            // 建立與數據庫的Connection連接
            // 這裏需要提供:
            // 數據庫所處於的ip:127.0.0.1 (本機)
            // 數據庫的端口號: 3306 (mysql專用端口號)
            // 數據庫名稱 how2java
            // 編碼方式 UTF-8
            // 賬號 root
            // 密碼 admin
  
            Connection c = DriverManager
                    .getConnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                            "root", "admin");
  
            System.out.println("連接成功,獲取連接對象: " + c);
  
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
    }
}

5、創建Statement

Statement是用於執行SQL語句的,比如增加,刪除

在這裏插入圖片描述

package jdbc;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
  
public class TestJDBC {
    public static void main(String[] args) {
  
        try {
            Class.forName("com.mysql.jdbc.Driver");
  
            Connection c = DriverManager
                    .getConnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                            "root", "admin");
  
            // 注意:使用的是 java.sql.Statement
            // 不要不小心使用到: com.mysql.jdbc.Statement;
            Statement s = c.createStatement();
  
            System.out.println("獲取 Statement對象: " + s);
  
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
    }
}

6、執行SQL語句

s.execute執行sql語句
執行成功後,用mysql-front進行查看,明確插入成功

執行SQL語句之前要確保數據庫how2java中有表hero的存在,如果沒有,需要事先創建表
在這裏插入圖片描述

package jdbc;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
  
public class TestJDBC {
    public static void main(String[] args) {
  
        try {
            Class.forName("com.mysql.jdbc.Driver");
  
            Connection c = DriverManager
                    .getConnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                            "root", "admin");
  
            Statement s = c.createStatement();
  
            // 準備sql語句
            // 注意: 字符串要用單引號'
            String sql = "insert into hero values(null,"+"'提莫'"+","+313.0f+","+50+")";
            s.execute(sql);
  
            System.out.println("執行插入語句成功");
  
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
    }
}

7、關閉連接

數據庫的連接是有限資源,相關操作結束後,養成關閉數據庫的好習慣
先關閉Statement
後關閉Connection

package jdbc;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
 
public class TestJDBC {
    public static void main(String[] args) {
 
        Connection c = null;
        Statement s = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
 
            c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root",
                    "admin");
 
            s = c.createStatement();
 
            String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
 
            s.execute(sql);
 
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            // 數據庫的連接時有限資源,相關操作結束後,養成關閉數據庫的好習慣
            // 先關閉Statement
            if (s != null)
                try {
                    s.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            // 後關閉Connection
            if (c != null)
                try {
                    c.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
        }
 
    }
}

8、使用try-with-resource的方式自動關閉連接

如果覺得上一步的關閉連接的方式很麻煩,可以參考關閉流 的方式,使用try-with-resource的方式自動關閉連接,因爲Connection和Statement都實現了AutoCloseable接口

package jdbc;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
  
public class TestJDBC {
    public static void main(String[] args) {
  
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
  
        try (
            Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                "root", "admin");
            Statement s = c.createStatement();             
        )
        {
            String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
            s.execute(sql);
              
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

9、參考鏈接

[01] How2j- JDBC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章