PostgreSQL - JAVA介面:初學者指南

您好,未來的數據庫大師!我很興奮能成為您進入PostgreSQL和Java世界的引路人。作為一個教了多年計算機科學的人,我迫不及待想與您分享我的知識和經驗。讓我們開始吧!

PostgreSQL - Java

安裝

在我們開始編程之前,我們需要設置我們的環境。別擔心,這比組裝宜家傢俱還要簡單!

  1. 安裝PostgreSQL:從官方網站下載並安裝PostgreSQL。
  2. 安裝Java開發工具包(JDK):從Oracle網站獲取最新版本。
  3. 下載JDBC驅動程序:我們需要這個來連接Java和PostgreSQL。你可以在PostgreSQL網站上找到它。

當你安裝完這些之後,你就準備好開始你的數據庫冒險了!

連接到數據庫

現在,讓我們寫我們的第一段代碼來連接到PostgreSQL數據庫。這就像給你的數據庫打電話一樣!

import java.sql.Connection;
import java.sql.DriverManager;

public class DatabaseConnection {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try {
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("成功連接到PostgreSQL服務器。");
} catch (Exception e) {
e.printStackTrace();
}
}
}

讓我們分解一下:

  • 我們導入了必要的Java SQL類。
  • 我們指定了數據庫的URL、用戶名和密碼。
  • 我們使用DriverManager.getConnection()來建立連接。
  • 如果成功,我們打印一個成功消息;否則,我們捕獲並打印任何錯誤。

創建表

太棒了!我們已經連接上了。現在,讓我們創建一個表。把它想像成設置一個新的電子表格。

import java.sql.*;

public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {

String sql = "CREATE TABLE students " +
"(id SERIAL PRIMARY KEY, " +
" name VARCHAR(50), " +
" age INTEGER, " +
" grade CHAR(1))";

stmt.executeUpdate(sql);
System.out.println("表創建成功!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

這裡發生了什麼:

  • 我們創建了一個Statement對象來執行SQL命令。
  • 我們定義了我們的SQL命令來創建一個名為'students'的表。
  • 我們使用executeUpdate()來運行SQL命令。

插入操作

現在,我們有一個表了,讓我們添加一些數據。這就像填寫你的新電子表格一樣!

import java.sql.*;

public class InsertData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO students(name, age, grade) VALUES(?, ?, ?)")) {

pstmt.setString(1, "Alice");
pstmt.setInt(2, 20);
pstmt.setString(3, "A");
pstmt.executeUpdate();

System.out.println("數據插入成功!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

這裡的分解:

  • 我們使用PreparedStatement來提高安全性和性能。
  • 我們使用setString()setInt()方法來設置值。
  • 我們使用executeUpdate()來執行插入。

查詢操作

該時候檢索我們的數據了!這就像讓你的電子表格顯示你已經輸入的内容。

import java.sql.*;

public class SelectData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM students")) {

while (rs.next()) {
System.out.println("ID: " + rs.getInt("id"));
System.out.println("Name: " + rs.getString("name"));
System.out.println("Age: " + rs.getInt("age"));
System.out.println("Grade: " + rs.getString("grade"));
}

} catch (SQLException e) {
e.printStackTrace();
}
}
}

讓我們解包這個:

  • 我們使用executeQuery()來運行一個SELECT語句。
  • 我們得到一個包含我們查詢結果的ResultSet
  • 我們使用一個while循環和rs.next()來迭代結果。
  • 我們使用像getInt()getString()這樣的方法從當前行中检索數據。

更新操作

有時我們需要改變我們的數據。這就像在電子表格中編輯一個單元格。

import java.sql.*;

public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"UPDATE students SET grade = ? WHERE name = ?")) {

pstmt.setString(1, "B");
pstmt.setString(2, "Alice");
int rowsUpdated = pstmt.executeUpdate();

System.out.println(rowsUpdated + " 行更新!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

這裡發生了什麼:

  • 我們準備了一個UPDATE語句,帶有占位符。
  • 我們設置了新的成績和要更新的學生的名字。
  • 我們執行更新並獲得影響的行數。

删除操作

最後,讓我們學習如何刪除數據。這就像從你的電子表格中刪除一行。

import java.sql.*;

public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"DELETE FROM students WHERE name = ?")) {

pstmt.setString(1, "Alice");
int rowsDeleted = pstmt.executeUpdate();

System.out.println(rowsDeleted + " 行刪除!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

這裡的分解:

  • 我們準備了一個DELETE語句,帶有一個占位符。
  • 我們設置了要刪除的學生的名字。
  • 我們執行刪除並獲得影響的行數。

常見數據庫方法

這裡是我們在範例中使用的常見方法的表格:

方法 描述
DriverManager.getConnection() 建立到數據庫的連接
Connection.createStatement() 創建一個Statement對象來執行SQL
Connection.prepareStatement() 創建一個PreparedStatement來執行參數化SQL
Statement.executeUpdate() 執行一個修改數據的SQL語句
Statement.executeQuery() 執行一個SQL查詢並返回一個ResultSet
ResultSet.next() 將光標移動到ResultSet中的下一行
ResultSet.getXXX()(例如,getString、getInt) 從當前行中检索列值

至此,您已經開始踏上了PostgreSQL和Java的世界。記住,熟能生巧,所以請繼續實驗這些概念。在您知道之前,您將會像專家一樣建立複雜的數據庫應用程序!

Credits: Image by storyset