Java数据库入门:PostgreSQL与MongoDB
\n\n在现代Java开发中,掌握数据库操作是一项关键技能。无论您是在开发Web应用程序、移动服务还是企业系统,都需要存储、检索和处理数据。本文将介绍两种流行的数据库管理系统:关系型PostgreSQL和文档型MongoDB。您将学习如何从Java应用程序连接它们、执行基本操作,并了解在何种情况下选择哪种技术。本文面向初学者,所有代码示例都尽可能简单并附有注释。
\n\n1. Java中PostgreSQL的基础操作
\n\nPostgreSQL是一款功能强大的开源对象关系型数据库管理系统。通过JDBC(Java数据库连接)驱动程序实现与Java的交互。下面逐步介绍连接和查询执行过程。
\n\n1.1. 驱动连接与配置
\n\n首先,需要在项目中添加依赖。如果使用Maven,请在pom.xml中添加以下内容:
<dependency>\n <groupId>org.postgresql</groupId>\n <artifactId>postgresql</artifactId>\n <version>42.7.1</version>\n</dependency>\n\n对于Gradle,请在build.gradle中添加:
implementation 'org.postgresql:postgresql:42.7.1'\n\n1.2. 创建表并插入数据
\n\n假设我们有一个名为testdb的数据库,用户名为user,密码为pass。创建一个简单的users表并添加几条记录。
import java.sql.*;\n\npublic class PostgresExample {\n public static void main(String[] args) {\n String url = "jdbc:postgresql://localhost:5432/testdb";\n String user = "user";\n String password = "pass";\n\n try (Connection conn = DriverManager.getConnection(url, user, password);\n Statement stmt = conn.createStatement()) {\n\n // 创建表\n String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" +\n "id SERIAL PRIMARY KEY, " +\n "name VARCHAR(100) NOT NULL, " +\n "email VARCHAR(100) UNIQUE)";\n stmt.executeUpdate(createTableSQL);\n System.out.println("表已创建或已存在。");\n\n // 插入数据\n String insertSQL = "INSERT INTO users (name, email) VALUES " +\n "('伊万·彼得罗夫', 'ivan@example.com'), " +\n "('玛丽亚·斯米尔诺娃', 'maria@example.com')";\n int rowsInserted = stmt.executeUpdate(insertSQL);\n System.out.println("已插入行数:" + rowsInserted);\n\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n1.3. 使用PreparedStatement读取数据
\n\n为了安全地处理用户输入,请使用PreparedStatement。这可以防止SQL注入攻击。
String selectSQL = "SELECT * FROM users WHERE name LIKE ?";\ntry (PreparedStatement pstmt = conn.prepareStatement(selectSQL)) {\n pstmt.setString(1, "%伊万%");\n ResultSet rs = pstmt.executeQuery();\n\n while (rs.next()) {\n int id = rs.getInt("id");\n String name = rs.getString("name");\n String email = rs.getString("email");\n System.out.println("ID: " + id + ", 姓名: " + name + ", 邮箱: " + email);\n }\n} catch (SQLException e) {\n e.printStackTrace();\n}\n\n如您所见,Java中PostgreSQL的操作非常标准且文档齐全。