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() 创建一个用于执行 SQL 的 Statement 对象
Connection.prepareStatement() 创建一个用于参数化 SQL 的 PreparedStatement
Statement.executeUpdate() 执行一个修改数据的 SQL 语句
Statement.executeQuery() 执行一个 SQL 查询并返回一个 ResultSet
ResultSet.next() 将游标移动到 ResultSet 中的下一行
ResultSet.getXXX() (例如,getString, getInt) 从当前行检索列值

就这样了!你已经迈出了进入 PostgreSQL 和 Java 世界的第一步。记住,熟能生巧,所以继续尝试这些概念。在你意识到之前,你将像专业人士一样构建复杂的数据库应用程序!

Credits: Image by storyset