JDBC的入門 搭建開發環境 編寫程式,在程式中載入資料庫驅動 建立連接 創建用於向資料庫發送SQL的Statement對象 從代表結果集的ResultSet中取出數據 斷開與資料庫的連接,並釋放相關資源 新建一個測試用的資料庫jdbctest 下載資料庫驅動並導入到jdbc項目 下載地址:http ...
JDBC的入門
- 搭建開發環境
- 編寫程式,在程式中載入資料庫驅動
- 建立連接
- 創建用於向資料庫發送SQL的Statement對象
- 從代表結果集的ResultSet中取出數據
- 斷開與資料庫的連接,並釋放相關資源
新建一個測試用的資料庫jdbctest
create database if not exists jdbctest default character set 'utf8';
use jdbctest;
create table if not exists user(
uid int unsigned auto_increment key,
username varchar(20) not null,
password varchar(20) not null,
name varchar(20) not null
)engine=innodb charset=utf8;
insert user
values
(null, 'aaa', '111', '張三'),
(null, 'bbb', '222', '李四'),
(null, 'ccc', '333', '王五');
下載資料庫驅動並導入到jdbc項目
下載地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
編寫jdbc測試程式(mysql版本為8.0.17)
package demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
public class JDBCDemo1 {
@Test
/**
* JDBC入門程式
*/
public void demo1() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1.載入驅動
Class.forName("com.mysql.cj.jdbc.Driver");
//2.獲得連接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest"
+ "?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8", "root", "1234");
//3創建執行SQL語句的對象,並且執行SQL
//3.1創建執行SQL語句的對象
String sql = "select * from user";
stmt = conn.createStatement();
//3.2執行SQL
rs = stmt.executeQuery(sql);
while(rs.next()) {
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
String name = rs.getString("name");
System.out.println(uid + "-" + username + "-" + password + "-" + name);
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
//4.釋放資源
if(rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { // ignore
}
rs = null;
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) { // ignore
}
stmt = null;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException sqlEx) { // ignore
}
conn = null; //垃圾回收機制更早回收對象。
}
}
}
}
JDBC的API
DriverManager
Connection
Statement
ResultSet
JDBC的資源釋放
- jdbc程式運行完後,切記要釋放程式在運行過程中,創建的那些與資料庫進行交互的對象,這些對象通常是ResultSet,Statement和Connection對象。
- 特別是Connection對象,它是非常稀有的資源,用完後必須馬上釋放,如果Connection不能及時、正確的關閉,極易導致系統宕機。Connection的使用原則是儘量晚創建,儘量早的釋放。