JDBC使用方式記錄

JDBC(Java DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。

本文使用的時MySQL數據庫進行連接。

所用數據庫表結構如下:

方式一:(基本使用方式)

步驟:

  1. 註冊驅動
  2. 建立連接
  3. 創建Statement / PreparedStatement
  4. 執行查詢,得到結果集
  5. 關閉資源

具體代碼如下:

import java.sql.*;
/**
 * JDBC使用
 */
public class JdbcDemo1 {

    public static void main(String[] args){

        String url = "jdbc:mysql://localhost:3306/king";
        String user = "root";
        String password = "123456";

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        
        try {
            //1.註冊驅動
            Class.forName("com.mysql.jdbc.Driver");

            //2.建立連接
            connection = DriverManager.getConnection(url, user, password);

            //3.創建statement
            statement = connection.createStatement();

            //4.執行查詢 得到結果集
            String sql = "select * from student";
            resultSet = statement.executeQuery(sql);

            //對結果集進行遍歷
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println(id +" "+ name +" "+ age);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //5.關閉資源
            try{
                if(resultSet != null){
                    resultSet.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                resultSet = null;
            }

            try{
                if(statement != null){
                    statement.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                statement = null;
            }

            try{
                if(connection != null){
                    connection.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                connection = null;
            }

        }
    }
}

方式二:(配置文件+工具類實現)

流程與方法一大體相同,區別在於通過配置文件降低依賴關係,並抽取出工具類,供後面開發使用。

具體內容如下:

(1)配置文件:

(2)工具類:在工具類的靜態代碼塊部分讀取配置文件,然後註冊驅動。

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JdbcUitls {

    static String driverClass = null;
    static String url = null;
    static String user = null;
    static String password = null;

    static {
        try{
            Properties properties = new Properties();
            InputStream in = JdbcUitls.class.getClassLoader().getResourceAsStream("jdbc.properties");
            properties.load(in);

            driverClass = properties.getProperty("driverClass");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");

        }catch (Exception e){
            e.printStackTrace();
        }
    }

    //建立數據庫連接
    public static Connection getConnection(){
        Connection connection = null;
        try{

            //1.註冊驅動
            Class.forName(driverClass);

            //2.建立連接
            connection = DriverManager.getConnection(url, user, password);

        }catch (Exception e){
            e.printStackTrace();
        }
        return connection;
    }

    //關閉資源
    public static void closeResource(ResultSet resultSet, Statement statement, Connection connection){
        closeResultSet(resultSet);
        closeStatement(statement);
        closeConnection(connection);
    }

    private static void closeResultSet(ResultSet resultSet){
        try{
            if(resultSet != null){
                resultSet.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            resultSet = null;
        }
    }

    private static void closeStatement(Statement statement){
        try{
            if(statement != null){
                statement.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            statement = null;
        }
    }

    private static void closeConnection(Connection connection){
        try{
            if(connection != null){
                connection.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            connection = null;
        }
    }
}

測試代碼如下:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcDemoTest {

    public static void main(String[] args){

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //建立連接
            connection = JdbcUitls.getConnection();

            //創建statemnet
            statement = connection.createStatement();

            //執行查詢 得到結果集
            String sql = "select * from student";
            resultSet = statement.executeQuery(sql);

            //對結果集進行遍歷
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println(id +" "+ name +" "+ age);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUitls.closeResource(resultSet, statement, connection);
        }
    }
}

 

*個人學習過程中的記錄,如有問題歡迎批評指正,共同進步。

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