一、JDBC基礎示例
阿新 • • 發佈:2019-01-03
一、簡介
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"表
DROPTABLE 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來載入驅動了。