1. 程式人生 > >一、JDBC基礎示例

一、JDBC基礎示例

一、簡介

JDBC全稱叫做Java database connectivity,直譯為Java語言的資料庫連線。它主要針對於支援結構化查詢語言(SQL)的資料來源,與Java程式連線並操作資料。

JDBC的基礎文件:https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

Java doc文件:https://blog.fondme.cn/apidoc/jdk-1.8-google/java/sql/package-frame.html

二、程式碼示例

這裡以本地mysql資料庫為例,準備一張"t_user"表

DROP
TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, `age` tinyint(4) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET =
utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES (1, 'lay', 23);

maven工程,引入依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</
artifactId> <version>6.0.6</version> </dependency>

Java程式碼示例

import java.sql.*;

public class JdbcDemo {

    static {
        try {
            // 載入驅動,並新增到DriverManager的list集合中
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws SQLException {
        Connection connection = null;
        PreparedStatement  statement  = null;
        ResultSet  resultSet  = null;
        try {
            // 獲取連線
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=true", "root", "password");
            // 建立statement物件,預編譯SQL語句
            statement = connection.prepareStatement("SELECT * FROM t_user WHERE id = ?");
            // 設定引數
            statement.setLong(1, 1);
            // 執行查詢語句
            resultSet = statement.executeQuery();
            // 遍歷查詢結果
            while (resultSet.next()) {
                // 列印欄位
                System.out.println(resultSet.getString(1));
                System.out.println(resultSet.getString(2));
                System.out.println(resultSet.getString(3));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 關閉資源
            resultSet.close();
            statement.close();
            connection.close();
        }
    }
}

執行結果

1
lay
23

Java程式碼示例中使用了PreparedStatement,對SQL進行預編譯操作,SQL會被髮送到dbms系統進行編譯。預編譯操作可以防止SQL注入,提升資料的安全性。

另外,新版的JDBC會自動載入驅動,可以不用顯示地去Class.forName來載入驅動了。