📅  最后修改于: 2023-12-03 15:03:50.139000             🧑  作者: Mango
PostgreSQL是最先进的开源关系型数据库之一,它提供了大量的特性和功能,例如高级的事务处理、完整的ACID支持、扩展性和可靠性等。PostgreSQL与Java结合使用非常自然,因为它提供了很多Java接口和驱动程序来实现Java应用程序和数据库的集成。
在使用Java与PostgreSQL交互之前,需要先安装PostgreSQL JDBC驱动程序。你可以从这里下载最新版本的PostgreSQL JDBC驱动程序:https://jdbc.postgresql.org/download.html
wget https://jdbc.postgresql.org/download/postgresql-42.2.24.jar
export CLASSPATH=$CLASSPATH:/path/to/postgresql-42.2.24.jar
在Java中连接到PostgreSQL数据库有不同的方法,其中最常用的方法是使用JDBC API。下面是一个使用JDBC与PostgreSQL建立连接的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws SQLException {
Connection connection = null;
try {
String URL = "jdbc:postgresql://localhost:5432/mydb";
String USER = "myuser";
String PASS = "mypassword";
connection = DriverManager.getConnection(URL, USER, PASS);
System.out.println("Connected to database");
} catch (SQLException e) {
System.out.println("Connection Failed");
e.printStackTrace();
} finally {
if (connection != null) {
connection.close();
}
}
}
}
上面的代码使用了DriverManager类来获取一个与PostgreSQL数据库的连接。在使用DriverManager获取连接时需要提供一个URL,URL格式如下:
jdbc:postgresql://host:port/database
上面的示例中,我们使用了localhost和默认端口5432以及名为mydb的数据库。还需要提供用户名和密码,使用这些信息来连接到数据库。
使用Java连接到PostgreSQL数据库之后,你可以执行SQL查询并获取结果。下面是一个执行SQL查询并输出结果的示例代码:
import java.sql.*;
public class Main {
static final String URL = "jdbc:postgresql://localhost:5432/mydb";
static final String USER = "myuser";
static final String PASS = "mypassword";
public static void main(String[] args) {
try {
Connection connection = DriverManager.getConnection(URL, USER, PASS);
String query = "SELECT * FROM users";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("Id: " + id);
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
System.out.println("Connection Failed");
e.printStackTrace();
}
}
}
上面的代码中,我们首先建立了一个与PostgreSQL数据库的连接,然后使用Statement对象执行了一个查询操作,最后使用ResultSet对象来读取查询结果。
除了查询操作之外,你也可以执行更新和删除操作。下面是一个执行更新和删除操作的示例代码:
import java.sql.*;
public class Main {
static final String URL = "jdbc:postgresql://localhost:5432/mydb";
static final String USER = "myuser";
static final String PASS = "mypassword";
public static void main(String[] args) {
try {
Connection connection = DriverManager.getConnection(URL, USER, PASS);
// Insert data into table
String insertQuery = "INSERT INTO users (name, age) VALUES ('John', 25)";
Statement statement = connection.createStatement();
int rowsInserted = statement.executeUpdate(insertQuery);
System.out.println(rowsInserted + " rows inserted");
// Delete data from table
String deleteQuery = "DELETE FROM users WHERE age < 18";
int rowsUpdated = statement.executeUpdate(deleteQuery);
System.out.println(rowsUpdated + " rows deleted");
statement.close();
connection.close();
} catch (SQLException e) {
System.out.println("Connection Failed");
e.printStackTrace();
}
}
}
上面的代码中,我们首先使用Statement对象执行了一个插入操作,然后使用executeUpdate()方法获取插入的记录条数。接着我们执行了一个删除操作,也使用executeUpdate()方法获取删除的记录条数。
除了Statement对象之外,还可以使用PreparedStatement对象执行SQL查询。PreparedStatement对象是一种预编译的SQL语句,可以避免SQL注入攻击,并提高性能。
下面是一个使用PreparedStatement对象执行SQL查询的示例代码:
import java.sql.*;
public class Main {
static final String URL = "jdbc:postgresql://localhost:5432/mydb";
static final String USER = "myuser";
static final String PASS = "mypassword";
public static void main(String[] args) {
try {
Connection connection = DriverManager.getConnection(URL, USER, PASS);
// Prepared statement
String query = "SELECT * FROM users WHERE age > ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, 18);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("Id: " + id);
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (SQLException e) {
System.out.println("Connection Failed");
e.printStackTrace();
}
}
}
上面的代码中,我们首先使用PreparedStatement对象构造了一个SQL查询,然后在查询中使用了占位符?。占位符?表示待填充的值,可以避免SQL注入攻击。接着我们使用setInt()方法来设置占位符的值,最后使用executeQuery()方法执行查询操作。
PostgreSQL是一种流行的关系型数据库,可以提供高级的事务处理、完整的ACID支持、扩展性和可靠性等功能。Java作为一种流行的编程语言,与PostgreSQL结合使用非常自然。本文介绍了如何使用JDBC API、DriverManager和PreparedStatement等对象连接到PostgreSQL数据库,并执行SQL查询、更新和删除操作。