1. 程式人生 > 其它 >【JDBC】JDBC入門

【JDBC】JDBC入門

技術標籤:技術

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的使用原則是儘量晚建立,儘量早的釋放。