1. 程式人生 > >JDBC之增刪改查

JDBC之增刪改查

一、什麼是JDBC

JDBC(Java DataBase Connectivity)就是Java資料庫連線,用Java語言來操作資料庫。簡單地說,JDBC就是用於執行SQL語句的一系列Java API。


二、為什麼要使用JDBC

早期SUN公司想編寫一套可以連線天下所有資料庫的API,但是因為各個廠商的資料庫伺服器差異太大了,這任務幾乎無法實現。後來SUN開始與資料庫廠商們討論,最終得出的結論是,由SUN提供一套訪問資料庫的規範,並提供連線資料庫的協議標準,然後各個資料庫廠商會遵循SUN的規範提供一套訪問自己公司的資料庫伺服器的API出現。SUN提供的規範命名為JDBC,而各個廠商提供的介面實現被稱之為驅動。

通過JDBC使得我們可以直接使用Java程式設計來對關係資料庫進行操作。通過封裝,可以使開發人員使用純Java API完成SQL的執行。




三、準備工作

我們以MySql為例來使用JDBC操作資料庫,現有如下的資料表在MySql中:


其建表語句為:

CREATE DATABASE jdbcDemo;
use jdbcDemo;
CREATE TABLE `per`(
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(50),
	`age` INT,
	`city` VARCHAR(100)
);
INSERT INTO per VALUES(NULL,'Estelle',24,"深圳");
INSERT INTO per VALUES(NULL,'Jasmine',27,"上海");
INSERT INTO per VALUES(NULL,'Iris',23,"長沙");
INSERT INTO per VALUES(NULL,'Emily',25,"廣州");
INSERT INTO per VALUES(NULL,'Bunny',25,"深圳");

準備好mysql資料庫的驅動jar包,並匯入到專案中


四、準備工作完畢,現在讓我們一起學習下JDBC的基本操作吧

  • 載入驅動類並獲取連線:
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class JDBCDemo {
	public static void main(String[] args) {
		Connection connection = null;
		try {
			Class.forName("com.mysql.jdbc.Driver"); // 載入驅動類
			// 連線MySql的URL
			String url = "jdbc:mysql://localhost:3306/jdbcDemo";
			String username = "root"; // MySql的使用者名稱
			String password = "123"; // MySql的使用者密碼
			// 獲取連線
			connection = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

上程式碼若若能夠正常執行不拋異常,則證明之前的準備工作是沒有失誤的。

  • 傳送增刪改語句
簡單描述下我們的操作: 1.新增一條記錄:name:Tom  age:29  city:北京 2.修改名為Iris的記錄:age->31  city->成都 3.刪除名為Bunny的記錄
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
	private static Connection connection;
	public static void main(String[] args) {
		connection = null;
		try {
			Class.forName("com.mysql.jdbc.Driver"); // 載入驅動類
			// 連線MySql的URL
			String url = "jdbc:mysql://localhost:3306/jdbcDemo";
			String username = "root"; // MySql的使用者名稱
			String password = "123"; // MySql的使用者密碼
			// 獲取連線
			connection = DriverManager.getConnection(url, username, password);
			CUDMethod();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void CUDMethod() {
		try {
			// 建立用於傳送SQL語句的Statement物件
			Statement statement = connection.createStatement();
			// Sql語句
			String insert = "INSERT INTO per VALUES(NULL,'Tom',29,'北京')";
			String update = "UPDATE per SET age=31,city='成都' where name='Iris'";
			String delete = "DELETE FROM per WHERE name='Bunny'";
			// 執行sql語句
			statement.executeUpdate(insert);
			statement.executeUpdate(update);
			statement.executeUpdate(delete);
			System.out.println("增刪改命令執行成功!");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

在控制檯檢視資料庫的內容,可以看到表中資料已經發生了改變。


  • 查詢表中的資料
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
	private static Connection connection;
	public static void main(String[] args) {
		connection = null;
		try {
			Class.forName("com.mysql.jdbc.Driver"); 
			String url = "jdbc:mysql://localhost:3306/jdbcDemo";
			String username = "root"; 
			String password = "123"; 
			connection = DriverManager.getConnection(url, username, password);
			// 得到返回的結果集物件
			ResultSet resultSet = queryTable();
			// 遍歷結果集物件
			while (resultSet != null && resultSet.next()) {
				String item = resultSet.getInt("id") + " "
						+ resultSet.getString("name") + " "
						+ resultSet.getInt("age") + resultSet.getString("city");
				System.out.println(item);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	// 用於查詢的方法 返回結果集物件
	public static ResultSet queryTable() {
		try {
			Statement statement = connection.createStatement();
			String query = "SELECT * FROM per";
			ResultSet resultSet = statement.executeQuery(query);
			return resultSet;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

查詢出表中的資料如下表:


到這裡,使用JDBC進行基本的增刪改查就學習完畢了。