Java自學-JDBC Hello JDBC

JDBC基礎

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

爲項目導入mysql-jdbc的jar包 步驟 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語句的,好比增長,刪除

建立Statement

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的存在,若是沒有,須要事先建立表

執行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");
  
            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();
        }
    }
}
相關文章
相關標籤/搜索