JDBC (Java DataBase Connection) 是經過JAVA訪問數據庫html
步驟 1 : 爲項目導入mysql-jdbc的jar包java
訪問MySQL數據庫須要用到第三方的類,這些第三方的類,都被壓縮在一個叫作Jar的文件裏。 爲了代碼可以使用第三方的類,須要爲項目導入mysql的專用Jar包。 一般都會把項目用到的jar包統一放在項目的lib目錄下,在本例就會放在 E:\project\j2se\lib 這個位置 而後在eclipse中導入這個jar包mysql
導包步驟: 右鍵project->property->java build path->libaries->add external jarssql
步驟 2 : 初始化驅動數據庫
經過Class.forName("com.mysql.jdbc.Driver"); 初始化驅動類com.mysql.jdbc.Drivereclipse
若是忘記了第一個步驟的導包,就會拋出ClassNotFoundException學習
Class.forName是把這個類加載到JVM中,加載的時候,就會執行其中的靜態初始化塊,完成驅動的初始化的相關工做。ui
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(); } } }
步驟 3 : 創建與數據庫的鏈接編碼
創建與數據庫的Connection鏈接 這裏須要提供: 數據庫所處於的ip:127.0.0.1 (本機) 數據庫的端口號: 3306 (mysql專用端口號) 數據庫名稱 how2java 編碼方式 UTF-8 帳號 root 密碼 adminspa
注: 這一步要成功執行,必須創建在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(); } } }
步驟 4 : 建立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(); } } }
步驟 5 : 執行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(); } } }
步驟 6 : 關閉鏈接
數據庫的鏈接是有限資源,相關操做結束後,養成關閉數據庫的好習慣 先關閉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(); } } } }
步驟 7 : 使用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(); } } }
練習: 一次性 插入100條數據
藉助循環,和上面學習到的JDBC的知識,向數據庫中插入100條數據,並在mysql-front中觀察查詢結果 答案 :
作一個0-100的for循環,生成不一樣的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"); } 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(); ) { for (int i = 0; i < 100; i++) { String sql = "insert into hero values(null," + "'英雄"+i+"'" + "," + 313.0f + "," + 50 + ")"; s.execute(sql); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }